鱼C论坛

 找回密码
 立即注册
查看: 1598|回复: 9

[已解决]请问一下,两种递归为何输出结果不一样

[复制链接]
发表于 2021-10-5 13:53:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
func1输出为3 2 1
func2输出为1 2 3
网络上有通过画图解释的 感觉说服力不强
def func1(x):
    if x > 0:
        print(x)
        func1(x - 1)


def func2(x):
    if x > 0:
        func2(x - 1)
        print(x)


func1(3)
func2(3)
最佳答案
2021-10-5 21:14:57
这种函数不应该叫递归,因为只有递的过程,没有归,更准确应该叫嵌套,层层嵌套

func1 是先打印,然后再执行函数,执行 func1(3) 打印 3 执行 func1(2) 打印 2  执行 func1(1) 打印 1 执行 func1(0) 不打印,无结果
而 func2 是先执行函数,再打印,执行 func2(3) , 执行 func2(2) ,执行 func2(1),执行 func2(0) ,然后不打印,打印1 打印2 打印3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-5 14:11:35 | 显示全部楼层
用vscode或pycharm的debug功能,观察每一步程序你就知道了。
“网上的说服性不强”,先思考一下自身的能力。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-5 16:51:31 | 显示全部楼层
suchocolate 发表于 2021-10-5 14:11
用vscode或pycharm的debug功能,观察每一步程序你就知道了。
“网上的说服性不强”,先思考一下自身的能力 ...

爬一边去 我知道怎么回事还来问?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-5 17:14:10 | 显示全部楼层
你说的说服力不强是你看不懂,还是说看懂了但不认同?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-5 17:15:47 | 显示全部楼层
第一个好理解
第二个先递归到 x = 0 ,然后再去打印 3 2 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-5 20:42:43 | 显示全部楼层
大马强 发表于 2021-10-5 17:14
你说的说服力不强是你看不懂,还是说看懂了但不认同?

看懂了 但是讲了个大概 没有讲的很详细
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-5 21:01:52 | 显示全部楼层
拿个纸笔来画画流程
函数为方框,变量放里边
调用设置之上到下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-5 21:14:57 | 显示全部楼层    本楼为最佳答案   
这种函数不应该叫递归,因为只有递的过程,没有归,更准确应该叫嵌套,层层嵌套

func1 是先打印,然后再执行函数,执行 func1(3) 打印 3 执行 func1(2) 打印 2  执行 func1(1) 打印 1 执行 func1(0) 不打印,无结果
而 func2 是先执行函数,再打印,执行 func2(3) , 执行 func2(2) ,执行 func2(1),执行 func2(0) ,然后不打印,打印1 打印2 打印3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-5 21:22:12 | 显示全部楼层
大马强 发表于 2021-10-5 21:01
拿个纸笔来画画流程
函数为方框,变量放里边
调用设置之上到下

画流程图这个解释知道怎么回事,只看代码的话,不明白func2先递归的话,为什么不输出x
def func2(x):
    if x > 0:
        func2(x - 1)
        print(x)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-5 21:29:07 | 显示全部楼层
qq1151985918 发表于 2021-10-5 21:14
这种函数不应该叫递归,因为只有递的过程,没有归,更准确应该叫嵌套,层层嵌套

func1 是先打印,然后再 ...

明白了 感谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 06:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表