如何执行print(n)?
def rec(n):
if n>0:
rec(n-1) #here it is used to call rec(9) again how 'print(n)'will execute
print(n)
rec(10)
答案 0 :(得分:0)
好吧,如果您要问它输出什么,那么您可以将其放在编辑器中,然后查看:https://repl.it/repls/IckyShinyProcedurallanguage
1
2
3
4
5
6
7
8
9
10
如果您要问print(n)
的执行情况,那是因为堆栈。如果您调用一个方法然后在该方法之后执行某些操作,则该方法之后的操作将仅在该方法完成运行后才执行。在这种情况下,程序将继续调用rec(n)直到n = 0,然后结束操作,依次打印1和2等。
答案 1 :(得分:0)
每个递归代码必须包含:
通常,人们使用递归来计算诸如斐波那契数列或阶乘之类的东西。需要多个步骤才能从上一步获取数据的事物。
您的函数正在使用递归再次运行代码。这是可行的,但递归不适合此目的。最好使用循环,但是如果您要测试递归的工作方式,那么这是一个很好的起点。
在执行print(n)
之前,代码将尝试逐步递归调用,直到基本情况停止为止。在这里,n
最终将达到0,这将结束此最低步骤,并返回到n
为1的上一步。
将首先执行打印语句,这是最低的工作步骤。 print(n)
完成后,代码将返回到下一个最低步骤。重复此过程,直到您最终返回第一步。
输出看起来像这样:
1
2
3
4
5
6
7
8
9
10
如果您仍然感到困惑,可以看一下关于递归的更长的解释。