我是新来的Python和学习功能。我遇到以下功能,并在我的智慧结束了解它是如何工作的。在我看来,无论b
的价值如何,答案应该总是六个,但事实并非如此。不应该这个Python函数总是返回6吗?
CODE
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.根据我的理解,这是不可能的。显然,我不理解逻辑流程。我究竟做错了什么?
如果你仔细看,它确实'合计(有效范围内的X(B))'但递归... – JBernardo
@JBernardo - 我知道这是递归,但哪里'sum'进来,这是如何工作的。我应该如何阅读逻辑流程? – PeanutsMonkey
我刚刚将算法转换为for循环。尝试向后思考:最后一次迭代返回'0',然后'a',然后'a + a' ...直到'a + a + ... + a'(包裹的数量是'b') – JBernardo