菜菜学起来 发表于 2023-2-23 11:49:01

python函数学习疑问

求大佬讲解下下面这个程序运行结果为啥是10?

def Foo(x):
    if (x==1):
      return 1
    else:
      return x+Foo(x-1)

print(Foo(4))

isdkz 发表于 2023-2-23 11:57:59

这是一个递归函数,它计算了一个数的1到该数的累加和。

在这个程序中,Foo(4) 的调用会触发递归函数的运行。由于 x 不等于1,所以程序将执行 x+Foo(x-1) 这个语句。这意味着程序会将 x 与 Foo(x-1) 的返回值相加,其中 x-1 是递归调用时传递给函数的参数。

接下来,Foo(x-1) 将会递归地调用 Foo(x-2),Foo(x-3),直到 Foo(1),因为这是递归的基本情况,此时 Foo(1) 直接返回 1。

然后,递归返回回来,将每个递归调用的结果累加起来,直到 Foo(4) 完全返回,得到的结果是:

4 + Foo(3) = 4 + (3 + Foo(2)) = 4 + (3 + (2 + Foo(1))) = 4 + (3 + (2 + 1)) = 10

因此,Foo(4) 的结果是 10。
页: [1]
查看完整版本: python函数学习疑问