我很难理解为什么我不能将这个简单函数的返回值赋给变量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
答案 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?
因此,回归很重要。