我有代码:
def recursion0(x):
if x == 1:
return 1
else:
recursion0(x-1)
print x
我知道值2-x会打印,但我无法弄清楚如何映射调用堆栈。以下是我的想法。
设置x = 3. 3在递归0(3-1)中变为2,然后在递归0(2-1)中变为2。是1然后返回到调用它的函数,recursion0(2-1),然后打印2,因为它是x值?这之后会发生什么呢? 另一个问题,为什么在1之后打印x(而不是之前)?
答案 0 :(得分:3)
您对recursion0(3)
的来电不会返回1
,而是None
,因为您的其他路径不会返回任何内容。
要解决此问题,请将recursion0(x-1)
更改为return recursion0(x-1)
。
当你的print
在递归之后,打印顺序与调用顺序相反。
我想要1-x打印的值,这个过程如何工作?
def recursion0(x):
if x == 0: return
recursion0(x-1)
print (x)
recursion0(3)
输出是:
>>>
1
2
3