ruc*_*cka -2 python recursion logic integer function
我对此递归感到有点困惑:
def count(num):
if num == 0:
print('Go!',end=' ')
else:
count(num-1)
print(num,end=' ')
count(5)
Run Code Online (Sandbox Code Playgroud)
为什么这样做?打印"Go!"后程序不应该停止执行吗?
当我在python可视化工具中运行它时,打印出"Go!" 执行跳转到不应该发生的else语句...
例如,它打印"Go!1 2 3 4 5"但我希望它打印"Go!"
Mar*_*ers 10
Go印首先,因为其他print()电话才会发生的递归调用返回.递归函数调用就像任何其他函数调用一样; 一旦调用返回,则执行下一行.
这是发生的事情:
count(5) 叫做.
if num == 0是假的,所以else分支被采取count(4) 叫做
if num == 0是假的,所以else分支被采取count(3) 叫做
if num == 0是假的,所以else分支被采取count(2) 叫做
if num == 0是假的,所以else分支被采取count(1) 叫做
if num == 0是假的,所以else分支被采取count(0) 叫做
if num == 0 是真的print('Go!', end=' ') 被执行
Go!使用尾随空格写入并且没有新行到stdoutprint(num,end=' ') 被执行
1使用尾随空格写入并且没有新行到stdoutprint(num,end=' ') 被执行
2使用尾随空格写入并且没有新行到stdoutprint(num,end=' ') 被执行
3使用尾随空格写入并且没有新行到stdoutprint(num,end=' ') 被执行
4使用尾随空格写入并且没有新行到stdoutprint(num,end=' ') 被执行
5使用尾随空格写入并且没有新行到stdout对函数的每次递归调用都是一个单独的函数执行,除了每次它们不特殊时执行相同的代码.如果有帮助,请在心理上重命名功能; count5调用count4并等待它返回,但是count4等待count3等等.每个函数都暂停,直到它们调用的函数返回.一旦count0返回,count1不只是停止,它仍然有更多的代码要执行!
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |