def counter(n):
if n < 0:
return
else:
print '1st print', n
counter(n-1)
print '2nd print', n
print counter(3)
# 1st print 3
# 1st print 2
# 1st print 1
# 1st print 0
# 2nd print 0
# 2nd print 1
# 2nd print 2
# 2nd print 3
# None
Run Code Online (Sandbox Code Playgroud)
所以在摆弄了递归函数后,我意识到一些非常特殊的东西,我无法完全绕过它.我理解它从3到0打印的函数的第一部分,但是当它从0再次打印到3时我不理解第二部分.当n = 0时,该函数不会停止吗?
您的递归调用仍会返回到调用它的父函数.在那个范围 n
没有改变.
即使您继续从自身调用函数,函数本地仍然是当前帧的本地.
您的递归调用如下所示:
counter(3):
n = 3
|
| counter(n - 1)
| n = 2
| |
| | counter(n - 1)
| | n = 1
| | |
| | | counter(n - 1)
| | | n = 0
| | | |
| | | return
| | |
| | n is still 1 here
| | return
| |
| n is still 2 here
| return
|
n is still 3 here
return
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
206 次 |
最近记录: |