将函数的返回值赋给变量

时间:2011-06-19 17:23:47

标签: 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

我没有将gcd设为18,而是在运行时得到这个:

Input : m =  119  n =  4
Output: gcd =  None

5 个答案:

答案 0 :(得分: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)

答案 1 :(得分:8)

您忘记返回递归的结果。

 ...
else:
    return euclidAlgorithm(n, r)

答案 2 :(得分:5)

您忘记了return

return euclidAlgorithm(n, r)

答案 3 :(得分:0)

在递归的情况下,你的函数不是return任何东西。

答案 4 :(得分:0)

如果没有return关键字,该函数会进行递归调用,但在达到基本条件之前没有返回值。

参考:How does using a return clause before a recursive function call differ from not using one?

因此,回归很重要。