【发布时间】:2020-06-16 16:01:28
【问题描述】:
我正在尝试在 Python 中创建一个递归函数(作为在线课程的一部分),它接受两个数字并返回它们之间的最大公分母,但是,该函数不会返回值。
我的代码是:
def gcdRecur(a, b):
x = min(a,b)
y = max(a, b)
if x == 0:
return y
else:
gcdRecur(x, y%x)
当我用
gcdRecur(2,12)
或者
gcdRecur(6,12)
什么都没有返回。我知道该函数有效,因为如果我在返回之前打印 y,那么正确的分母会打印到控制台,我只是不确定为什么该函数不输出 y。
这可能是显而易见的,但由于我是 Python 新手,我不确定自己做错了什么。
任何帮助将不胜感激。
【问题讨论】:
-
做:
return gcdRecur(x, y%x) -
在某些语言中,函数的返回值是最后计算的表达式的值。 Python 不是其中一种语言。
-
def gcd(A,B): return A if B==0 else gcd(B,A%B),更漂亮更简单的一行gcd实现方式