gpt4 book ai didi

Python - 为什么递归调用即使没有返回值也会递增变量?

转载 作者:行者123 更新时间:2023-12-01 01:16:06 28 4
gpt4 key购买 nike

为什么会这样?

这是一个递归函数,用于将正数乘以加法。

def multiplication(num1, num2):
if num1 == 0 or num2 == 0:
return 0
print(num1, " ", num2)
if num1 == 1:
return num2
total = num2 + multiplication(num1-1, num2)
return total

我知道该函数将调用自身 num1 - 1 次。我不明白的是为什么每次函数返回时变量 Total 都会增加 num2 的值。最后一次调用该函数时,它返回 num2 (首先从调用堆栈中取出)是有意义的,但其他调用不返回任何内容,并且 num2 的值永远不会更改。似乎 Total 应该设置为 None 而不是 += num2。

谢谢

最佳答案

试运行乘法(3, 10)代码将如下所示。

     Num1 Num2 total  Return

1st: 3 10

2nd: 2 10

3rd: 1 10 10(returned to the 2nd)

2nd: 2 10 20 20(returned to the 1st)

1st: 3 10 20 30(returned to the output)

从空运行中可以看出,Num2 的值从未改变。

关于Python - 为什么递归调用即使没有返回值也会递增变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54335208/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com