|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
求大佬帮分析下:
- 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("程序结束,回到主程序")
复制代码
|
|