将函数的返回值赋给变量

Pav*_*kyy 2 python

我很难理解为什么我不能将这个简单函数的返回值赋给变量gcd:

def euclidAlgorithm(m, n):
    if n == 0:
        print "n cannot be zero."
        return -1
    r = m % n # Remainder
    if r == 0:
        return n
    else:
        euclidAlgorithm(n, r)

if __name__ == "__main__":
    #Input values
    m = 54
    n = 36

    print "Input : m = ", m, " n = ", n
    gcd = euclidAlgorithm(m, n)
    if gcd == -1:
        print "Function terminated with an error"
    else:
        print "Output: gcd = ", gcd
Run Code Online (Sandbox Code Playgroud)

gcd当我运行它时,我得到的不是得到18:

Input : m =  119  n =  4
Output: gcd =  None
Run Code Online (Sandbox Code Playgroud)

Mor*_*sen 10

你错过了return一句话euclidAlgorithm(m, n).像这样:

def euclidAlgorithm(m, n):
    if n == 0:
        print "n cannot be zero."
        return -1
    r = m % n #Remainder
    if r == 0:
        return n
    else:
        return euclidAlgorithm(n, r)
Run Code Online (Sandbox Code Playgroud)


Ign*_*ams 8

你忘了返回递归的结果.

 ...
else:
    return euclidAlgorithm(n, r)
Run Code Online (Sandbox Code Playgroud)


Rom*_*huk 5

你忘记了return:

return euclidAlgorithm(n, r)
Run Code Online (Sandbox Code Playgroud)