关于递归函数
求大佬帮分析下:def fn(n):
print("现在是第",n,"层递归")
if n >= 3:
return
fn(n+1)
print("递归的第",n,"层结束")
fn(1)
print("程序结束,回到主程序")
运行结果:
现在是第 1 层递归
现在是第 2 层递归
现在是第 3 层递归
递归的第 2 层结束
递归的第 1 层结束
程序结束,回到主程序
问题来了,
递归的第 2 层结束
递归的第 1 层结束
是怎么运行的 听别人解释,不如自己调试
特朗普说:没有比我更懂递归。。。 听别人解释,真的不如自己调试一下看一看 本帖最后由 Twilight6 于 2020-6-20 23:58 编辑
写在注释里了:
def fn(n):
# 开始时候 n = 1
# 第一次递归 n = 2
# 第二次递归 n = 3
print("现在是第",n,"层递归")
# n = 1 第一次打印
# n = 2 第二次打印
# n = 3 第三次打印
if n >= 3:
# n = 1 不符合 if 条件跳过
# n = 2 不符合 if 条件跳过
# n = 3 符合条件 执行 if 代码块
return
# 执行到 return 递归开始返回 顺序是:
# fn(3)->fn(2)->fn(1)
fn(n+1)
# 第一次 n = 1 运行到此处 fn(1+1) = fn(2) 进入第一次递归
# 第二次 n = 2 运行到此处 fn(2+1) = fn(3) 进入第二次递归
print("递归的第",n,"层结束")
# fn(2)递归 打印
# fn(1)递归 打印
fn(1)
print("程序结束,回到主程序") 仔细想了下,可以这样分解:
f(1):
print1开始
f(2)
print1结束
当运行f(2)时
f(2):
print2开始
f(3)
print2结束
当运行f(3)时
f(3):
print3开始
满足if条件,return,结束f(3)
所以接下来就是打印print2结束,之后f(2)运行结束,跟着print1结束
页:
[1]