方法的递归是指在一个方法的内部调用自身的过程,递归必须要有结束条件,不然就会陷入无限递归的状态,永远无法结束调用。
1 public class Example { 2 public static void main(String[] args) { 3 int sum = getSum(4); 4 System.out.println("sum =" +sum); 5 } 6 //下面的方法使用递归实现求1 ~ n的和 7 public static int getSum(int n){ 8 //满足条件,递归结束 9 if (n ==1){ 10 return 1; 11 } 12 int temp = getSum(n -1); 13 return temp + n; 14 } 15 16 }
运行结果:
第12行代码相当于在gerSum()方法的内部调用了自身,这就是方法的递归,整个递归过程在n==1时结束。方法的递归调用过程很复杂,通过下图来分析整个调用过程--
整个递归过程中getSum()方法被调用了4次,每次调用时,n的值都会递减。当n的值为1时,所有递归调用的方法都会以相反的的顺序相继结束,所有的返回值都会进行累加,最终得到结果10
(通俗的讲,当第四次递归结束时,返回值为1,再往上第三次递归return temp + 2实际上就等于1+2,return 3,以此类推,得出最终结果10)
关于递归,理解起来有点不容易,可以自行百度了解