斐波那契的遞歸和迭代方法實(shí)現(xiàn)和性能對比

c語言實(shí)現(xiàn)

#include<stdio.h>  
#include<time.h>
#include <windows.h>
#pragma warning( disable : 4996)

typedef unsigned long long int longint;
//這個(gè)是為longlong類型整形的無符號的類型起個(gè)別名為longint,
//主要是為了輸出更大的數(shù),主要是為了輸出更大斐波那契數(shù)的時(shí)候使用,可以不用管這個(gè)
longint diedai(int n);
void digui_show(int n);
void diedai_show(int n);
longint digui(int n);

int main()
{
    int n = 40;
    //聲明四個(gè)個(gè)時(shí)間類型的變量,主要是比較迭代和遞歸使用的時(shí)間
    DWORD diedai_start, diedai_stop, digui_start, digui_stop;
    printf("########迭代方法##########\n");
    diedai_start = GetTickCount();
    //調(diào)用迭代方法
    diedai_show(n);
    diedai_stop = GetTickCount();
    longint l = diedai_stop - diedai_start;
    printf("\n迭代使用輸出%d個(gè)數(shù)使用的時(shí)間為: %lld ms\n",n, l);

    printf("########遞歸方法##########\n");
    digui_start = GetTickCount();
    //調(diào)用遞歸方法
    digui_show(n);
    digui_stop = GetTickCount();
    longint l2 = digui_stop - digui_start;
    printf("\n遞歸使用輸出%d個(gè)數(shù)使用的時(shí)間為: %lld ms\n", n, l2);
    system("pause");
    return 0;
}

void diedai_show(int n) {
    //這個(gè)函數(shù)是通過for循環(huán)調(diào)用迭代的方法輸出N個(gè)斐波那契的數(shù)
    for (int i = 1; i <= n; i++) {
        if (i % 4 == 0 && i>1)printf("\n");
        printf("%8lld\t\t", diedai(i));
    }
}

void digui_show(int n) {
    //這個(gè)函數(shù)是通過for循環(huán)調(diào)用遞歸的方法輸出N個(gè)斐波那契的數(shù)
    for (int i = 1; i <= n; i++) {
        if (i % 4 == 0 && i > 1)printf("\n");
        printf("%8lld\t\t", digui(i));
    }
}

longint diedai(int n){
    //這個(gè)函數(shù)是通過迭代的方法返回第N個(gè)斐波那契的數(shù)
    longint i = 0, x1 = 0, x2 = 1, x3 = 0;
    if (n < 2)return 1;
    for (i = 2; i <= n; i++)
    {
        /*這是實(shí)現(xiàn)疊加也是迭代的for循環(huán),n是第幾個(gè)斐波那契的數(shù),然后就迭代n次*/
        x3 = x1 + x2;
        x1 = x2;
        x2 = x3;
    }
    return x3;
}

longint digui(int n) {
    //這個(gè)函數(shù)是通過遞歸的方法返回第N個(gè)斐波那契的數(shù)
    if (n ==1||n==2)
    {
        return 1;
    }
    return digui(n - 2) + digui(n - 1);

}
image.png

兩種方法的性能對比還是很明顯的,所以在使用斐波那契的一定要選擇合適的方式

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容