这段代码让我迷路了。运行时,它会输出我觉得奇怪的序列:
def print_n(number):
if (number <= 0):
return None
else:
print number
print_n(number-1)
print_n(number-1)
print_n(4)
我以为它会输出这个序列:
4,3,2,1,1,2,1,3,2,1
但是它实际上输出:
4,3,2,1,1,2,1,1,3,2,1,1,2,1,1
我试图绘制这个函数的堆栈图,但是当我在print_n(number-1)
.
我可以在没有第二次出现的情况下理解这个程序print_n(number-1)
,因为它只是正常的递归。但是,第二个print_n(number-1)
,似乎比我想象的要复杂得多,我不知道如何跟踪这个函数调用并解释结果......