案例:
package DiGui;
/*
练习:
使用递归计算1-n之间的和
*/
public class Demo01Sum {
public static void main(String[] args) {
int s = sum(3);
System.out.println(s);
}
/*
定义一个方法,使用递归计算1-n之间的和
1+2+3+4+...+n
n+(n-1)+(n-2)+(n-3)+...+1
已知:
最大值:n
最小值:1
使用递归必须明确:
1.递归的结束条件
获取到1的时候结束
2.递归的目的
获取下一个被加的数字(n-1)
*/
public static int sum(int n){
//获取到1的时候结束
if (n == 1){
return 1;
}
//获取下一个被加数字(n-1)
return n + sum(n - 1);
}
}
运行结果:
6
递归原理分析:
??? 首先程序执行的是:入口main方法压栈执行(调用了sum方法);
??? 接着sum方法进行压栈执行(传入n=3,执行判断语句,n!=3,执行return 3+sum(3-1) ,再次调用sum方法);
??? 依次类推......
??? 直到调用sum方法传入n=1时:
??????? if语句n=1成立,执行return 1,1进行返回到方法调用处(上一个sum方法)进行相加计算,直到返回最底层sum方法,计算完毕后,出栈。
?