我是 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。根据我的理解,这是不可能的。显然,我不理解逻辑流程。我究竟做错了什么?