递归

若如初见. 提交于 2019-11-30 23:01:17

递归

什么是递归

递归就是自己调用自己,每次调用传入不同的变量,递归有助于编程者解决复杂的问题,同时可以让代码变得更加简洁

递归执行过程

1.当程序执行到一个方法的时候,就会开辟一个新的栈
2.每个空间的局部变量是独立的

递归的案例

package recursion;

public class RecursionTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        test(5);
        System.out.printf("factorial(%d)=%d\n",5,factorial(5));
    }
    
    public static void test(int n) {
        if(n>2) {
            test(n-1);
        }
        System.out.println("n="+n);
    }
    
    public static int factorial(int n) {
        if(n==1||n==0) {
            return 1;
        }else {
            return factorial(n-1)*n;
        }
    }

}

递归解决什么问题

1.8皇后、汉诺塔、阶乘、二分查找、迷宫等问题
2.快速排序、归并排序、二分查找、分治算法
3.用栈解决问题,代码整洁

递归重要的规则

1.执行一个方法会创建一个独立受到保护的栈的空间
2.方法的局部变量必须是独立的,不受到影响
3.递归方法必须与递归的条件逼近,否则无法递归
4.当一个方法结束或者遇到return,就会返回,遵循谁调用,就将结果反馈给谁,同时执行方法完毕之后或者返回的时候,该方法就执行完毕。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!