/*
copyright@nciaebupt 轉載請註明出處
題目:一個臺階總共有n級,如果一次可以跳1級,也可以跳2級。求總共有
多少總跳法。
分析:
這道題最近經常出現,包括MicroStrategy等比較重視算法的公司都曾
先後選用過個這道題作爲面試題或者筆試題。
首先我們考慮最簡單的情況。如果只有1級臺階,那顯然只有一種跳法。
如果有2級臺階,那就有兩種跳的方法了:一種是分兩次跳,每次跳1
級;另外一種就是一次跳2級。
現在我們再來討論一般情況。我們把n級臺階時的跳法看成是n的函數,
記爲f(n)。
當 n=1 時有 1 種跳法
一次跳一階
當 n=2 時有 2 種跳法
一次跳一階, 1 1
一次跳二階 2
當n>2時,第一次跳的時候就有兩種不同的選擇:
一是第一次只跳1級,此時跳法數目等於後面剩下的n-1級臺階的跳法
數目,即爲f(n-1);
另外一種選擇是第一次跳2級,此時跳法數目等於後面剩下的n-2級臺
階的跳法數目,即爲f(n-2)。
因此n級臺階時的不同跳法的總數f(n)=f(n-1)+ f(n-2)。
*/
#include <cstdlib>
#include <iostream>
int Fibonacci(int n){
int prepre = 1;
int pre = 2;
int res = 0;
for(int i = 3; i <= n; ++i){
res = pre + prepre;
prepre = pre;
pre = res;
}
return res;
}
int main(int argc, char ** argv){
int n = 5;
int num = Fibonacci(n);
std::cout<<num<<std::endl;
system("pause");
return 0;
}
一個臺階總共有n級,如果一次可以跳1級,也可以跳2級。求總共有 多少總跳法。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.