搜索
您的当前位置:首页正文

十三、递归

来源:二三娱乐

递归的定义

方法直接的或者间接的调用方法自身的过程,称为递归。

什么样的需求可以使用递归调用?

1:一个需求可以被分解为若干个子需求。
2:子需求的解决的方案和原需求的解决方案一致。
3:原需求的解决依赖于子需求的解决。

实现递归的代码

方法1:

//求n的阶乘的方法
    public static int fac(int n){
        int result = 0;
        if(n == 1){
            result = 1;
        }else{
            result = n*fac(n-1);
        }
        return result;
    }

方法2:

//求n 的阶乘
    public static int fac1(int n){
        int mul = 1;
        for(int i = n;i>0;i--){
            mul *= i;
        }
        return mul;
    }

递归阶乘的底层堆栈调用

一张图,你能明白


递归阶乘的底层堆栈

递归的优缺点

优点:代码简单,思路也还行。
缺点:比较消耗栈内存。稍有不慎,有可能导致栈内存溢出。 stackoverflowError一种内存溢出的异常。

斐波那契数列

见《学编程,你必须掌握的几种算法编程》

Top