递归打印数字

时间:2018-09-05 01:17:54

标签: python recursion

如何执行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)

2 个答案:

答案 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

如果您仍然感到困惑,可以看一下关于递归的更长的解释。

https://www.geeksforgeeks.org/recursion/