求一个java递归算法的执行流程
他从100开始递减,一直减到0的执行步骤我知道,可是当返回一个结果,然后intsum=i的时候就等于1了?然后就是123,步循环执行,每次sum增1,具体执行流程是怎么回...
他从100开始递减,一直减到0的执行步骤我知道,可是当返回一个结果,然后int sum =i的时候就等于1了?然后就是123,步循环执行,每次sum增1,具体执行流程是怎么回事?求大神解答!万分感谢
展开
1个回答
展开全部
很简单,执行到1的时候,i-1的值再调用自己,直到,i-1<=0的时候,你可以理解,一直反复调用自己,但是到了1这一步的时候 都停了。然后,当i=0的时候,最后一次的return sum;返回了一个0。于是,倒数第二次的sum=1+0;然后再到return sum;返回1;接着,倒数第三次执行。此时i=2. sum=2+1;return sum=3;返回上一级,倒数第4次sum=3,sum=3+3;等于6,再到reutrn sum=6;返回上一级……;依次类推。
追问
就是最后return sum返回0的时候我就不懂了,按你说的这个时候int sum =i;sum应该等于0,那i也是0,if(i>0)这句话应该不成立,不成立的话怎么就进到if里面了?里面并没有累加,他是怎么每次增1的?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询