簡介:
斐波那契數列是義大利著名的數學家,他最重要的研究成果是在不定分析和數學論方面,他的斐波那契數列成為世人熱衷研究的問題。
*:面試此題的機率也很大。
特點:
a1,a2已知
a(n)=a(n-1)+a(n-2) n>=3
應用:兔子繁殖問題,樹枝問題,上樓方式問題,蜂房問題,聲音問題,花瓣問題。。。。。
詳解:
樓梯上有n階台階,上樓時可以一步上一階,也可以上2階,編寫演算法計算到第二階共有多少種不同的上樓梯方式。
數學模型:從問題按照習慣,從前向後思考,也就是從第一階開始,考慮怎麼到第二階,第三階....則很難找出問題
的規律;而反過來先思考「到n階有幾種情況」,答案就簡單了,只有兩種情況。
從第n-1 階到第n階
從第n-2階到第n階
int feibonaqie(int n)
return feibonaqie(n - 1) + feibonaqie(n-2);
}
但僅僅就這樣嗎?不,當n>=100時,在執行程式時,電腦會一段時間沒反應,原因是上面程式的函式占用了大量
cpu的資源。所以我們提出了優化方案:
將遞迴轉換為迴圈,當n很大時,可以大大提高效率。
#include#includeusing namespace std;
int feibonaqie2(int n)
else
return fn; }
}int main()
還有其他方法下次總結,不足之處,多多指教。
面試題9 斐波那契數列
方法一 很容易想到的解法是直接使用遞迴。c include stdafx.h include using namespace std long long fibonacci unsigned int n if n 1 return fibonacci n 1 fibonacci n 2 int tm...
面試題9 斐波那契數列
題目一 寫乙個函式,輸入n,求斐波那契數列的第n項,斐波那契數列的定義如下 0 n 0 f n 1 n 1 f n 1 f n 2 n 1 遞迴 long long fibonacci unsigned int n if n 0 n 1 return n return fibonacci n 1 f...
面試題9 斐波那契數列
面試題9 題目 寫乙個函式,輸入n,求斐波那契數列的第n項。很多教科書中的解法 long long fibonacci solution1 unsigned int n 這是從第n項向前計算的方法,很多計算量實際上是重複的。long long fibonacci solution2 unsigned...