0
点赞
收藏
分享

微信扫一扫

迭代 > 递归

对比简介优点缺点
递归函数自己调用自己结构简单,容易理解空间复杂度高,容易在成堆栈溢出
迭代函数中某段代码循环,循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。结构复杂空间复杂度低
总结大多数情况下,两者能够相互转换,能用迭代的不要用递归

 

裴波那契数列 的实现为例。1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F1=1,F2=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)。

// 递归实现方式
    public static int fibonacci(int n){
        if(n <= 2){
            return 1;
        }else{
            return fibonacci(n-1) + fibonacci(n-2);
        }
    }

// 递推实现方式
    public static int fibonacciNormal(int n){
        if(n <= 2){
            return 1;
        }
        int n1 = 1, n2 = 1, sn = 0;
        for(int i = 3; i <= n; i ++){
            sn = n1 + n2;
            n1 = n2;
            n2 = sn;
        }
        return sn;
    }


 

举报

相关推荐

0 条评论