这个代码从1加到100的原理是什么

img


代码的栈和递归出口是什么,为什么可以计算从1到100的和,大概解释一下

原理就是递归呀,依次调用yourSum方法,根据传入的起始值跟最终值计算,起始值跟终止值一样返回,否则递归调用方法传入起始值,终止值-1两个参数
比如 yourSum(1,3);
结果就是 yourSum(1,3)=yourSum(1,2)+3
yourSum(1,2)又是 yourSum(1,1)+2
而 yourSum(1,1) 直接返回1, 那结果就是 yourSum(1,3)=yourSum(1,2)+3 =yourSum(1,1)+2+3=1+2+3=6

随便代两个数过一遍,如start = 1,end = 3
第一次:yourSum(1, 3);
第二次:yourSum(1, 2) + 3;
第三次:yourSum(1, 1) + 2 + 3;
最后一次:1 + 2 + 3;

如图所见,if else 分支结构,
当start 与end 相等时,代表加到尾巴了
进入if结构 返回结果;
否则,就进入else分支,进行累加