关于递归的一些想法

1.什么是递归

        说白了,就是在方法中调用该方法;因为要不断调用自身,所以需要设置一个退出递归调用的终止条件,每次调用都要判断本次调用是否满足终止条件,如果满足,则逐层退出递归。

2.例子

class Test {
    public int add(int a){
        if(a == 1)
            return 1;
        else
            return add(a-1)+a;
    }

    public static void main(String[] args) {
        Test test = new Test();
        System.out.println(test.add(5));
    }
}

        上述示例中,为了计算5的阶乘,add方法中又调用了add方法。但每轮都要判断是否等于1。最终输出15。

进栈出栈流程如下:

3.思考

        当递归进行到最底层,即满足结束条件时,返回某个值;处于倒数第二层的式子收到最底层的返回值,就可以进行运算,并继续执行代码,得到结果并返回倒数第三层,依此类推,最终得到顶层的结果。

        由此可见,递归天然具有回溯的性质,递归本质是不断利用栈保存未得到结果的式子,直至最底层结果得到,再逐层回溯,得到最终结果。

猜你喜欢

转载自blog.csdn.net/li1593891525/article/details/121283556