跳臺(tái)階
題目描述
一只青蛙一次可以跳上1級(jí)臺(tái)階,也可以跳上2級(jí)。求該青蛙跳上一個(gè)n級(jí)的臺(tái)階總共有多少種跳法。
實(shí)現(xiàn)代碼
function jumpFloor(number)
{
if (number<0){
return -1;
}else if(number <=2){
return number
}
var arr = [];
arr[0] = 1;
arr[1] = 2;
for(var i = 2; i < number; i++) {
arr[i] = arr[i - 1] + arr[i - 2];
}
return arr[number-1];
}
思路
本題的前提是只有一次1階或者2階的跳法:
- 假定第一次跳的是一階,那么剩下的是n-1個(gè)臺(tái)階,跳法是f(n-1);
- 假定第一次跳的是2階,那么剩下的是n-2個(gè)臺(tái)階,跳法是f(n-2);
- 由假設(shè)得出總跳法為:f(n)=f(n-1)+f(n-2);
- 當(dāng)臺(tái)階只有一階時(shí),f(1)=1,只有兩階時(shí)時(shí),f(2)=2;
- 到這大家估計(jì)都看出來(lái)了,最終得出的是一個(gè)斐波那契數(shù)列:
n=1, f(n)=1
n=2, f(n)=2
n>2,且為整數(shù), f(n)=f(n-1)+f(n-2)