递归的执行推演过程

递归的执行推演过程return 的作用与意义 return 用于函数 表示不再执行其后的部分 返回调用该函数的地方继续执行 递归中的 return 表示当前层的递归执行完毕 返回到上一层 是逐层返回的意思 由于对 return 的理解不到位 很容易对递归中 return 产生误区 意义

大家好,我是讯享网,很高兴认识大家。

return的作用与意义

return 用于函数,表示不再执行其后的部分,返回调用该函数的地方继续执行。 

递归中的return,表示当前层的递归执行完毕,返回到上一层,是逐层返回的意思。(由于对return的理解不到位,很容易对递归中return产生误区)


讯享网

意义

在函数中,如果碰到return 语句,那么程序就会返回调用该函数的下一条语句执行,也就是说跳出函数的执行,回到原来的地方继续执行下去。但是如果是在主函数中碰到return语句,那么整个程序就会停止,退出程序的执行。
函数的返回值是由返回语句return实现的,函数执行的最后一个操作就是返回,返回的意义是:
(1)子程序函数返回主调函数,宣告函数的一次执行结束,在调用期间所分配的变量单元被撤消;
(2)送函数值到调用表达式中,当然这一点并不是必需的,因为有些函数有返回值,有些函数没有返回值。

递归的执行推演过程

堆归求和1-100

/ * Copyright (C), 2000-2021, XXX有限公司 * FileName: RecursionSum * Author: wangyetao * Date: 21-11-7 08:17:45 * Description: 递归求和 * <p> * History: * <author> 作者姓名 * <time> 修改时间 * <version> 版本号 * <desc> 版本描述 */ package simple.callback.recursion; / * @ClassName: RecursionSum * @Description: 递归求和-执行过程 * @Author: wangyetao * @Date: 21-11-7 08:17:45 */ public class RecursionSum { static int sum(int n, int layer) { //#1 if (layer == 0) { System.out.println("进入主函数" + layer + "层,n=" + n); } else { System.out.println("进入递归函数第" + layer + "层,n=" + n); } //#2 if (n <= 1) { System.out.println("n <= 1;return n;"); return n; } //#3 layer++; //#4 int sum = n + sum(n - 1, layer); //#5 if ((layer - 1) == 0) { System.out.println("返回主函数第" + (layer - 1) + "层,n=" + n + ",sum=" + sum); } else { System.out.println("返回递归函数第" + (layer - 1) + "层,n=" + n + ",sum=" + sum); } //#6 return sum; } public static void main(String[] args) { System.out.println(sum(100, 0)); } }

讯享网

执行过程

讯享网进入主函数0层,n=100 进入递归函数第1层,n=99 进入递归函数第2层,n=98 进入递归函数第3层,n=97 进入递归函数第4层,n=96 进入递归函数第5层,n=95 进入递归函数第6层,n=94 进入递归函数第7层,n=93 进入递归函数第8层,n=92 进入递归函数第9层,n=91 进入递归函数第10层,n=90 进入递归函数第11层,n=89 进入递归函数第12层,n=88 进入递归函数第13层,n=87 进入递归函数第14层,n=86 进入递归函数第15层,n=85 进入递归函数第16层,n=84 进入递归函数第17层,n=83 进入递归函数第18层,n=82 进入递归函数第19层,n=81 进入递归函数第20层,n=80 进入递归函数第21层,n=79 进入递归函数第22层,n=78 进入递归函数第23层,n=77 进入递归函数第24层,n=76 进入递归函数第25层,n=75 进入递归函数第26层,n=74 进入递归函数第27层,n=73 进入递归函数第28层,n=72 进入递归函数第29层,n=71 进入递归函数第30层,n=70 进入递归函数第31层,n=69 进入递归函数第32层,n=68 进入递归函数第33层,n=67 进入递归函数第34层,n=66 进入递归函数第35层,n=65 进入递归函数第36层,n=64 进入递归函数第37层,n=63 进入递归函数第38层,n=62 进入递归函数第39层,n=61 进入递归函数第40层,n=60 进入递归函数第41层,n=59 进入递归函数第42层,n=58 进入递归函数第43层,n=57 进入递归函数第44层,n=56 进入递归函数第45层,n=55 进入递归函数第46层,n=54 进入递归函数第47层,n=53 进入递归函数第48层,n=52 进入递归函数第49层,n=51 进入递归函数第50层,n=50 进入递归函数第51层,n=49 进入递归函数第52层,n=48 进入递归函数第53层,n=47 进入递归函数第54层,n=46 进入递归函数第55层,n=45 进入递归函数第56层,n=44 进入递归函数第57层,n=43 进入递归函数第58层,n=42 进入递归函数第59层,n=41 进入递归函数第60层,n=40 进入递归函数第61层,n=39 进入递归函数第62层,n=38 进入递归函数第63层,n=37 进入递归函数第64层,n=36 进入递归函数第65层,n=35 进入递归函数第66层,n=34 进入递归函数第67层,n=33 进入递归函数第68层,n=32 进入递归函数第69层,n=31 进入递归函数第70层,n=30 进入递归函数第71层,n=29 进入递归函数第72层,n=28 进入递归函数第73层,n=27 进入递归函数第74层,n=26 进入递归函数第75层,n=25 进入递归函数第76层,n=24 进入递归函数第77层,n=23 进入递归函数第78层,n=22 进入递归函数第79层,n=21 进入递归函数第80层,n=20 进入递归函数第81层,n=19 进入递归函数第82层,n=18 进入递归函数第83层,n=17 进入递归函数第84层,n=16 进入递归函数第85层,n=15 进入递归函数第86层,n=14 进入递归函数第87层,n=13 进入递归函数第88层,n=12 进入递归函数第89层,n=11 进入递归函数第90层,n=10 进入递归函数第91层,n=9 进入递归函数第92层,n=8 进入递归函数第93层,n=7 进入递归函数第94层,n=6 进入递归函数第95层,n=5 进入递归函数第96层,n=4 进入递归函数第97层,n=3 进入递归函数第98层,n=2 进入递归函数第99层,n=1 n <= 1;return n; 返回递归函数第98层,n=2,sum=3 返回递归函数第97层,n=3,sum=6 返回递归函数第96层,n=4,sum=10 返回递归函数第95层,n=5,sum=15 返回递归函数第94层,n=6,sum=21 返回递归函数第93层,n=7,sum=28 返回递归函数第92层,n=8,sum=36 返回递归函数第91层,n=9,sum=45 返回递归函数第90层,n=10,sum=55 返回递归函数第89层,n=11,sum=66 返回递归函数第88层,n=12,sum=78 返回递归函数第87层,n=13,sum=91 返回递归函数第86层,n=14,sum=105 返回递归函数第85层,n=15,sum=120 返回递归函数第84层,n=16,sum=136 返回递归函数第83层,n=17,sum=153 返回递归函数第82层,n=18,sum=171 返回递归函数第81层,n=19,sum=190 返回递归函数第80层,n=20,sum=210 返回递归函数第79层,n=21,sum=231 返回递归函数第78层,n=22,sum=253 返回递归函数第77层,n=23,sum=276 返回递归函数第76层,n=24,sum=300 返回递归函数第75层,n=25,sum=325 返回递归函数第74层,n=26,sum=351 返回递归函数第73层,n=27,sum=378 返回递归函数第72层,n=28,sum=406 返回递归函数第71层,n=29,sum=435 返回递归函数第70层,n=30,sum=465 返回递归函数第69层,n=31,sum=496 返回递归函数第68层,n=32,sum=528 返回递归函数第67层,n=33,sum=561 返回递归函数第66层,n=34,sum=595 返回递归函数第65层,n=35,sum=630 返回递归函数第64层,n=36,sum=666 返回递归函数第63层,n=37,sum=703 返回递归函数第62层,n=38,sum=741 返回递归函数第61层,n=39,sum=780 返回递归函数第60层,n=40,sum=820 返回递归函数第59层,n=41,sum=861 返回递归函数第58层,n=42,sum=903 返回递归函数第57层,n=43,sum=946 返回递归函数第56层,n=44,sum=990 返回递归函数第55层,n=45,sum=1035 返回递归函数第54层,n=46,sum=1081 返回递归函数第53层,n=47,sum=1128 返回递归函数第52层,n=48,sum=1176 返回递归函数第51层,n=49,sum=1225 返回递归函数第50层,n=50,sum=1275 返回递归函数第49层,n=51,sum=1326 返回递归函数第48层,n=52,sum=1378 返回递归函数第47层,n=53,sum=1431 返回递归函数第46层,n=54,sum=1485 返回递归函数第45层,n=55,sum=1540 返回递归函数第44层,n=56,sum=1596 返回递归函数第43层,n=57,sum=1653 返回递归函数第42层,n=58,sum=1711 返回递归函数第41层,n=59,sum=1770 返回递归函数第40层,n=60,sum=1830 返回递归函数第39层,n=61,sum=1891 返回递归函数第38层,n=62,sum=1953 返回递归函数第37层,n=63,sum=2016 返回递归函数第36层,n=64,sum=2080 返回递归函数第35层,n=65,sum=2145 返回递归函数第34层,n=66,sum=2211 返回递归函数第33层,n=67,sum=2278 返回递归函数第32层,n=68,sum=2346 返回递归函数第31层,n=69,sum=2415 返回递归函数第30层,n=70,sum=2485 返回递归函数第29层,n=71,sum=2556 返回递归函数第28层,n=72,sum=2628 返回递归函数第27层,n=73,sum=2701 返回递归函数第26层,n=74,sum=2775 返回递归函数第25层,n=75,sum=2850 返回递归函数第24层,n=76,sum=2926 返回递归函数第23层,n=77,sum=3003 返回递归函数第22层,n=78,sum=3081 返回递归函数第21层,n=79,sum=3160 返回递归函数第20层,n=80,sum=3240 返回递归函数第19层,n=81,sum=3321 返回递归函数第18层,n=82,sum=3403 返回递归函数第17层,n=83,sum=3486 返回递归函数第16层,n=84,sum=3570 返回递归函数第15层,n=85,sum=3655 返回递归函数第14层,n=86,sum=3741 返回递归函数第13层,n=87,sum=3828 返回递归函数第12层,n=88,sum=3916 返回递归函数第11层,n=89,sum=4005 返回递归函数第10层,n=90,sum=4095 返回递归函数第9层,n=91,sum=4186 返回递归函数第8层,n=92,sum=4278 返回递归函数第7层,n=93,sum=4371 返回递归函数第6层,n=94,sum=4465 返回递归函数第5层,n=95,sum=4560 返回递归函数第4层,n=96,sum=4656 返回递归函数第3层,n=97,sum=4753 返回递归函数第2层,n=98,sum=4851 返回递归函数第1层,n=99,sum=4950 返回主函数第0层,n=100,sum=5050 5050 Process finished with exit code 0
小讯
上一篇 2025-04-11 12:03
下一篇 2025-02-20 10:28

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/54920.html