求斐波那契數列用遞迴還是累加

2021-10-09 18:55:39 字數 762 閱讀 2127

首先這是乙個面試題,題目是這樣的

有乙個數列是1,1,2,3,5,8…請程式設計寫出第50個數字是多少
這麼簡單?不就是斐波那契數列嗎,看我的

#include

#include

double

fun(

double n)

intmain()

遞迴用起來,看著是很簡單,但是效率不敢恭維

12586269025

over

這是計算結果,用時442s

遞迴深似海,慎用

還是簡單第累加求斐波那契吧

#include

#define num 50

intmain()

printf

("arr[%d]:%.lf\n"

, num -

1, arr[num -1]

);//for (int i = 0; i < 50; i++)

// printf("arr[%d]:%.lf\n", i, arr[i]);

return0;

}

計算結果幾乎秒出

arr[49]:12586269025

遞迴求斐波那契額數列

一 斐波那契數列 由於斐波納挈數列是以兔子的繁殖引入的,因此也叫 兔子數列 它指的是這樣乙個數列 0,1,1,2,3,5,8,13.從這組數可以很明顯看出這樣乙個規律 從第三個數開始,後邊乙個數一定是在其之前兩個數的和。在數學上,斐波納挈數列可以以這樣的公式表示 f 0 0 f 1 1 f n f ...

求斐波那契數列

一 用陣列求取斐波那契數列第n項的數值 非遞迴 斐波那契數列求取思想 第n項 第n 1項 第n 2項 function getvalue n var j 0 while j n 1 return arr j else alert getvalue 8 求第八項的值 二 使用遞迴求取第n項的值 fun...

用遞迴求斐波那契數

斐波那契數是第乙個數和第二個數都為1,從第三個數開始,後面的是是前面相鄰兩個數的和。定義的函式如下所示 int fib int m if語句為了確定第一位和第二位都為1,完整的 如下所示 include include int fib int m int main printf n printf n...