求斐波那契數列第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...