递归函数:有人能解释一下这段代码是如何打印 1 到 5 的吗?
Posted
技术标签:
【中文标题】递归函数:有人能解释一下这段代码是如何打印 1 到 5 的吗?【英文标题】:Recursive functions: can someone explain how this code printed 1 to 5? 【发布时间】:2022-01-20 20:07:18 【问题描述】:def recursion_1(n):
if n == 0:
return
recursion_1 (n-1)
print(n)
我不明白这段代码如何打印 1 到 5,就像 for 循环打印范围从 1 到 5 的列表一样。 在这里传递 5 作为参数。
【问题讨论】:
你叫它recursion_1(5)
,对吧?请edit 并将其包含在问题中,以确保完整性。顺便说一句,欢迎来到 Stack Overflow!如果需要提示,请查看tour 和How to Ask。
你对递归了解多少?您对函数的工作原理了解多少? SO 并非提供教程,但如果您有具体的症结所在,我们可以提供帮助。
【参考方案1】:
理解它的最好方法可能是想象一下如果你用它的定义替换函数调用会是什么样子。
所以recursion_1(5)
变成:
if 5 == 0:
return
recursion_1 (4)
print(5)
这又相当于:
if 5 == 0:
return
if 4 == 0:
return
recursion_1 (4)
print(4)
print(5)
等等直到:
if 5 == 0:
return
if 4 == 0:
return
if 3 == 0:
return
if 2 == 0:
return
if 1 == 0:
return
recursion_1 (0)
print(1)
print(2)
print(3)
print(4)
print(5)
然后recursion_1(0)
将返回,因为满足条件(0 == 0
为真)并且每个先例调用将在打印其编号后返回。
【讨论】:
以上是关于递归函数:有人能解释一下这段代码是如何打印 1 到 5 的吗?的主要内容,如果未能解决你的问题,请参考以下文章