为什么我必须在else的情况下返回函数?我不能只应用定义的函数,因为我只需要返回b的值并存储它吗?
def gcd_a(a,b):
if a==0:
return b
else:
gcd_a(b%a,a)
最佳答案 我认为您缺少的主要概念是,为了获得递归函数(或任何函数)的结果,您访问结果的函数必须返回值*
现在,当你调用gcd_a时,对gcd_a的递归调用最终会返回一个值,但是它会丢失,因为你访问结果的函数没有返回值.
为了向您展示这是真的,让我们添加一个日志语句,在函数返回时打印:
def gcd_a(a,b):
if a==0:
print('finally returning!', b)
return b
else:
gcd_a(b%a,a)
现在如果我们打电话:
print(gcd_a(10, 99))
我们得到以下输出:
finally returning! 1
None
在某个地方,对gcd_a的递归调用发现你的条件为True,并返回1,但是,这个结果没有打印,因为你的gcd_a调用不会返回
*除非你做一些奇怪的事情,比如更新全局变量等等……