def aa(a):
if a == 1:
return 1
else:
return aa(a-1) + 1
我能够理解上面的递归以及它是如何工作的。
但是我无法理解这种递归是如何起作用的。你能帮助我吗?
def aa(a):
if a == 1:
return 1
else:
return aa(a-1) + aa(a-1)
我也尝试过调试。光标是跳跃的地方。没有帮我弄清楚。
答案 0 :(得分:0)
在一个简单的层面上考虑这个问题,比如像2:
这样的数字def aa(a):
if a == 1:
return 1
else:
return aa(a-1) + aa(a-1)
由于2大于1,我们直接去其他地方。
其他人要求我们评估aa(a-1)
,然后将aa(a-1)
添加到其中。为此,我们必须首先评估此表达式的最左侧值;
如果起始值为2,则很容易看到aa(a-1)
为aa(2-1)
或仅aa(1)
,由于第一个if语句,它将始终返回值1。因此,else会评估为aa(1) + aa(1)
或仅1 + 1
那么当我们传递初始值3时会发生什么?逻辑如下(粗体是将在下一行评估的函数):
// aa(2) + aa(2)
基本上你正在评估等式的左边,而在左边,你正在评估左边和右边。但是你首先评估左边,然后左边评估等等,直到你最终得到一个结果,然后评估右边,继续直到你得到答案: