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

时间:2019-01-23 20:33:48

标签: python

为什么这样做?

这是一个递归函数,用于将正数相加。

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。

谢谢

1 个答案:

答案 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) 的值从未更改。