学科分类
目录
Java基础

方法的递归

方法的递归是指在一个方法的内部调用自身的过程。递归必须要有结束条件,不然就会陷入无限递归的状态,永远无法结束调用。接下来通过一个案例来学习如何使用递归算法计算自然数之和,如文件1所示。

文件1 Example07.java

 1    public class Example07 {
 2        // 使用递归实现 求1~n的和
 3        public static int getSum(int n) {
 4            if (n == 1) {
 5                // 满足条件,递归结束
 6                return 1;
 7            }
 8            int temp = getSum(n - 1);
 9            return temp + n;
 10        }
 11        public static void main(String[] args) {
 12            int sum = getSum(4);                   // 调用递归方法,获得1~4的和
 13            System.out.println("sum = " + sum); // 打印结果
 14        }
 15    }

运行结果如图1所示。

图1 运行结果

文件1中,定义了一个getSum()方法用于计算1~n之间的自然数之和。第8行代码相当于在getSum()方法的内部调用了自身,这就是方法的递归,整个递归过程在n==1时结束。

由于方法的递归调用过程很复杂,接下来通过一个图例来分析整个调用过程,如图2所示。

图2 递归调用过程

图2描述了文件1中整个程序的递归调用过程,其中getSum()方法被调用了4次,每次调用时,n的值都会递减。当n的值为1时,所有递归调用的方法都会以相反的顺序相继结束,所有的返回值会进行累加,最终得到的结果10。

点击此处
隐藏目录