斐波那契数列之递归、循环

来源:互联网 发布:网络寻凶第一季百度云 编辑:程序博客网 时间:2024/05/16 09:13
//递归 recursiveint AddFrom1ToN_recursive(int n){    //if (n >= 1){    //  return n + AddFrom1ToN_recursive(n - 1);    //}    //else{    //  return 0;    //}    return n <= 0 ? 0 : n + AddFrom1ToN_recursive(n - 1);}//循环 circulationint AddFrom1ToN_circulation(int n){    int sum = 0;    for (int i = 1; i <= n; i++){        sum += n;    }    return sum;}/*斐波那契数列的第N项要求输入一个整数n,输出斐波那契数列的第n项。*///解法一,递归,存在严重的重复计算,效率极低。时间复杂度以 n的指数 方式递增int Fibonacci1(int n){    if (n <= 0){        return 0;    }    else if (n == 1){        return 1;    }    else{        return Fibonacci1(n - 1) + Fibonacci1(n - 2);    }}//面试官期待的使用算法,非递归,从下往上 计算,时间复杂度为O(n).int Fibonacci2(int n){    if (n <= 0){        return 0;    }    else if (n == 1){        return 1;    }    else{        //n>=2        int n1 = 0;        int n2=1;        int sum = 0;        for (int i = 2; i <= n; i++){            sum = n1 + n2;            n1 = n2;            n2 = sum;        }        return sum;    }}
0 0
原创粉丝点击