Slu*_*urm 2 python recursion function
def A(x, y):
if x == 0:
return y + 2
if y == 0:
return A(x - 1, 1) + 1
return A(x - 1, A(x, y - 1)) * 2
print(A(1, 3))
Run Code Online (Sandbox Code Playgroud)
输出是60。我运行了代码,但我不知道您如何获得该值。对不起,这个相当愚蠢的问题。
A似乎是递归的,因此当您调用 时A(1,3),它会不断调用自身。
让我们来看看它:
第一次运行它x != 0,所以它不会返回y+2
y != 0,所以它不会返回 A(x-1, 1) + 1
相反,它返回 A(x-1, A(x, y-1)) * 2
…
对此的看法可以概括为:
A(1,3):
return A(x-1, A(x, y-1)) * 2
return A(0, A(1, 2)) * 2:
A(1,2):
return A(x-1, A(x, y-1)) * 2
return A(0, A(1, 1)) * 2:
A(1,1):
return A(x-1, A(x, y-1)) * 2
return A(0, A(1, 0)) * 2:
A(1,0):
return A(x-1, 1) + 1
return A(0, 1) + 1:
A(0,1):
return y+2
return 3
3 + 1 = 4
return 4
return A(0,4) * 2:
A(0,4):
return y+2
return 6
6*2 = 12
return 12
return A(0, 12) * 2:
A(0,12):
return y+2
return 14
14*2 = 28
return 28
return A(0, 28) * 2:
A(0,28):
return y+2
return 30
30 * 2 = 60
return 60
Run Code Online (Sandbox Code Playgroud)
希望那棵“树”可以帮助您想象正在发生的事情。