计算斐波那契数列的两种常用方式的性能比较

来源:互联网 发布:最好的网络借贷平台 编辑:程序博客网 时间:2024/05/20 11:19
<span style="font-size:24px;">#include <stdio.h>#include <stdlib.h>/*    1.使用递归求解,但是性能非常差,原因就是在递归过程中大量重复计算,        使用递归的时候,算法的时间复杂度是以n的指数递增的,       在我实际测试的时候,这个方法计算到50的时候就会停下来,       所以在实际运用中不建议使用 但是在笔试的时候可以使用*/long long Fibonacci_digui(unsigned int n){    if(n <= 0)        return 0;    if(n == 1)        return 1;    return Fibonacci_digui(n-1)+Fibonacci_digui(n-2);}/*     2.为了避免大量的重复计算,使用一个变量来记录每次计算的结果,      然后使用循环来求解,这个算法的时间效率是O(n) 我计算4000的时候还可以得出结果,     计算10000就不行了,但相比较第一种方式,这种算法优势很明显,建议在比赛或者机试时候使用*/long long Fibonacci_xunhuan(unsigned n){    long long arr[2] = {0,1};    if(n <= 1)        return arr[n];    long long num; //用来保存计算结果    int i;    for(i = 2; i <= n; i++)    {        num = arr[1] + arr[0];        arr[0] = arr[1];        arr[1] = num;    }    return num;}int main(){    printf("%lld",Fibonacci_digui(8));    printf("%lld",Fibonacci_xunhuan(1000));    return 0;}</span>

0 0