1. 程式人生 > >裴波那契數列與遞迴

裴波那契數列與遞迴

裴波那契數列就是一個序列,這個數列有個十分明顯的特點,那是:前面相鄰兩項之和,構成了後一項,例如:1,1,2,3,5,8,13。

我們用迭代的辦法如何實現這個數列

void Fbi(int n)
{
    if(n == 0)
        printf("please input n > 0\n");
    if(n == 1)
        printf("1\n");
    else if(n == 2)
        printf("1  1\n");
    else{
        int a[n];
        a[0] = 1;
        a[1
] = 1; printf("1 1"); for (int i = 2; i < n; i++) { a[i] = a[i-1] + a[i-2]; printf(" %d",a[i]); } } }

遞迴函式實現

int Fbi(int i)
{
    if(i < 2)
        return i == 0 ? 0 : 1;
    return Fbi(i - 1) + Fbi(i - 2);
}

遞迴的定義:把一個直接呼叫自己或通過一系列的呼叫語句間接地呼叫自己的函式,稱做遞迴函式。

每一個遞迴定義必須至少有一個條件,滿足時遞迴不再進行,即不再已引用自身而返回值退出