我是 Python 新手,正在学习函数。我遇到了以下功能,并在我的智慧中理解了它是如何工作的。在我看来,无论 的值如何b
,答案都应该是 6,但事实并非如此。
代码
def mult(a, b):
if b == 0:
return 0
rest = mult(a, b - 1)
value = a + rest
return value
print "3 * 2 = ", mult(3, 2)
我对发生的事情的理解
- 因为
b
不是 0 它继续 rest
被赋值3, 1
并再次运行函数- 因为
b
是 1 并且确实等于 0,所以它继续rest
rest
被赋值3, 0
并再次运行函数- 由于
b
现在为零,因此返回值 0 - 然后它继续进行,
value
其值为 3 + 3,a
其值为 3,rest
值为 3,即(3,0)
- 它返回值 6
但是如果我分配mult(3,4)
,它会返回值 12。根据我的理解,这是不可能的。显然,我不理解逻辑流程。我究竟做错了什么?