題目描述
一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
分析:
考慮1個臺階,只有1跳法,則 f(1) = 1
考慮2個臺階,可以1級級條,可以一次跳2級,有兩種跳法,則f(2) = 2
考慮3個臺階,它可以由1級跳來得到,也可以由2級跳來得到,所以它的跳法爲 f(3-1) + f(3-2) = f(1) + f(2)
考慮n個臺階,它的跳法爲 f(n-1) + f(n-2)
實則上爲斐波那契數列。可以用遞歸,也可以用循環方法求解。
代碼:
int jumpFloor(int number) {
int fn;
int f1 = 1, f2 = 2;
if(number<0) return 0;
if(number == 1) return f1;
if(number == 2) return f2;
int count = 3;
fn = f1 + f2;
while(count<number){
f1 = f2;
f2 = fn;
fn = f1 + f2;
count++;
}
return fn;
}