[求助]如何理解过程的返回路径?
scratch吧
全部回复
仅看楼主
level 4
wjn2644
楼主
初学递归,其它的都能理解,就是这张图下面的返回路径不明白是什么意思,请各位不吝赐教!
2018年08月10日 01点08分
1
level 11
three♬
这是一个递归吧
2018年08月10日 01点08分
2
three♬
流程图尖的是判断,方块是执行语句,这个程序会递归调用自身,直到后面的参数≤0
2018年08月10日 01点08分
Mr_Wu0603
%%%tql
2018年08月13日 14点08分
three♬
@Mr_Wu0603
我是###,you very%%%,不管在α还是LG!!!
2018年08月13日 16点08分
Mr_Wu0603
@three♬
您吊打集训队啊!
2018年08月14日 04点08分
level 4
wjn2644
楼主
编程语言的返回值我能理解,但这个递归过程最后的“返回”,以及下面虚线标示的“返回路径”,我没看明白,谁能解释一下这里面的含义,谢谢!
2018年08月10日 02点08分
3
level 10
射手joshua2006
其实递归时A函数是没有停下来的。只是在等它引发的B函数完成。同理B函数引发了C函数等C函数结束,C函数又引发D函数并且等待。最后D函数判断为 false 并且D函数执行结束,D函数就“告诉” C函数自己完成了任务。于是C函数也完成任务B函数继续,最终回到A函数。最后结束这个程序。
这个 “返回” 和 “返回值” 没有半毛的关系!
2018年08月10日 02点08分
4
射手joshua2006
A函数引发B函数时A函数会停滞直到B函数结束。(希望可以帮到你!)
2018年08月10日 02点08分
wjn2644
@射手joshua2006
十分感谢您,这么一解释,我就明白了!
2018年08月10日 03点08分
钱芃达
@wjn2644
所以递归效率比递推低很多
2018年08月13日 07点08分
射手joshua2006
@钱芃达
不能这么说。不够同时引发太多函数CPU可能会吃不消。这是递归最大的弱点。
2018年08月13日 08点08分
level 12
(o.0)
c++思路水平
2018年08月12日 19点08分
5
level 9
-流-
递归停止不放在最上面,难受。
就是说3--进入下一次递归说2--进入下一次递归说1--进入下一次递归说0--回退到上一次递归即说完1之后,没有程序--回退到上一次递归即说完2之后,没有程序--回退到上一次递归即说完3之后,没有程序--递归结束。
2018年08月13日 01点08分
6
-流-
“返回值”是指的c或者c++的return 0; scratch没有返回值,但是“返回”即“回退”现象还是会有的。
2018年08月13日 01点08分
level 8
钱芃达
准确的说是:
输入3
分支1展开:3->2->1->0
分支2展开:2->1->0
分支3展开:1->0
分支3返回:1<-0
分支2返回:2<-1<-0
分支1返回:3<-2<-1<-0
得到结果
2018年08月13日 12点08分
8
钱芃达
@射手joshua2006
2018年08月13日 12点08分
射手joshua2006
@钱芃达
2018年08月13日 13点08分
1