为什么这样做?
这是一个递归函数,用于将正数相加。
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。
谢谢
答案 0 :(得分:2)
对Project detail
的代码进行空运行将如下所示。
multiplication(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)
的值从未更改。