斐波那契數列幾道題目
阿新 • • 發佈:2019-01-02
題目描述:大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項。
變態跳臺階: f(0)=0;f(1)=1;f(2)=2=1+0=f(1)+f(0); f(n)=f(n-1)+f(n-2)+...+1 程式碼:
程式碼:
n<=39
f(0)=0;f(1)=1
f(n)=f(n-2)+f(n-1),n>=2
程式碼:
class Solution { public: int Fibonacci(int n) { if(n==0) return 0; if(n==1) return 1; int tmp1=0; int tmp2=1; for(int i=2;i<=n;i++){ tmp2+=tmp1; tmp1=tmp2-tmp1; } return tmp2; } };
題目描述
一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 f(0)=0;f(1)=1;f(2)=2; f(n)=f(n-2)+f(n-1) 程式碼:class Solution { public: int jumpFloor(int number) { if(number==0) return 0; if(number==1) return 1; if(number==2) return 2; int tmp1=1; int tmp2=2; for(int i=3;i<=number;i++){ tmp2+=tmp1; tmp1=tmp2-tmp1; } return tmp2; } };
變態跳臺階: f(0)=0;f(1)=1;f(2)=2=1+0=f(1)+f(0); f(n)=f(n-1)+f(n-2)+...+1 程式碼:
下面方法是觀察規律,最後計算,2^(n-1),直接計算太慢,用左移運算子,x<<n相當於x*2^nclass Solution { public: int jumpFloorII(int number) { if(number==0) return 0; if(number==1) return 1; int fn=1; int fn1=1; for(int i=2;i<=number;i++){ fn+=fn1; fn1=fn; } return fn; } };
程式碼:
class Solution {
public:
int jumpFloorII(int number) {
return 1<<(number-1);
}
};