斐波那契數列求第n項的值

2021-10-23 05:14:27 字數 1059 閱讀 1183

求斐波那契數列第n項的值

方法一:遞迴

數列的第n項(除第1項和第2項)是第n-1項與第n-2項的和。數列滿足遞迴的關係,故可用遞迴演算法求第n項的值。

用遞迴求解,最重要的事是確定結束條件,給演算法乙個出口。本題中結束遞迴的條件為:n等於1或n等於2。

演算法如下:

int fibonacci(int* n)

step1:若n等於1或n等於2,return 1;否則,進入step2;

step2:return fibonacci(n-1)+fibonacci(n-2);

**實現:

int

fibonacci

(int

* n)

方法二:迭代

從斐波那契數列的第1項開始,按遞推公式找到數列的每一項的值,直到找到第n項的值。

1 1 -> 1 1 2 -> 1 1 2 3 -> 1 1 2 3 5-> 1 1 2 3 5 8 -> …

**如下:

int

fibonacci

(int

* n)

return sum;

}

方法三:用棧還原方法一的遞迴演算法(注:本方法純屬個人練手,可跳過)

本題方法一的遞迴演算法,有點類似二叉樹的中序遍歷。趁最近正在學二叉樹,感覺非常打腦殼,用這個斐波那契數列遞迴演算法非遞迴化找下手感。

直接放偽**了:

int fibonacci (

int n)

else

push

(stack, i)

;//i大於1就入棧

}while(!

empty

(stack)

)else

else

push

(stack, i)

;//i大於1就入棧}}

}return answer;

//最後,answer即為第n項的值

}

求斐波那契數列第n項的值

斐波那契數列的描述 斐波那契數列的描述 斐波那契數列,又稱 分割數列,指的是這樣的乙個數列 0 1 1 2 3 5 8 13 21 在數學上,斐波那契數列定義如下 f 0 0,f 1 1,f n f n 1 f n 2 n 2,n n 即這個數列從第二項開始,每一項都等於前兩項之和。特別指出 0是第...

求斐波那契數列的第n項

斐波那契數列的定義如下 f 0 0 f 1 1 f n f n 1 f n 2 n 2 1,1,2,3,5,8,13,21,34,55,89,144,233,377,給出n,求f n 由於結果很大,輸出f n 1000000009的結果即可。input 輸入1個數n 1 n 10 18 output...

求斐波那契數列的第n項

問題描述 斐波那契數列是這樣的乙個數列,1,1,2,3,5,8,即前兩項都是1,後面每一項都是其前面兩項的和。現在要你求出該數列的第n項。解法一 遞迴演算法。很多教科書上都用這個題作為函式遞迴知識點講解的例題,我們可以將每乙個項的求法表達為這樣乙個式子 f n f n 1 f n 2 f 1 1,f...