在python中返回函数的值

为什么我必须在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调用不会返回

*除非你做一些奇怪的事情,比如更新全局变量等等……

点赞