一只青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
- 假設當有n個臺階時假設有f(n)種走法。
- 青蛙最后一步要么跨1個臺階要么跨2個臺階。
- 當最后一步跨1個臺階時即之前有n-1個臺階,根據1的假設即n-1個臺階有f(n-1)種走法。
- 當最后一步跨2個臺階時即之前有n-2個臺階,根據1的假設即n-2個臺階有f(n-2 )種走法。
- 顯然n個臺階的走法等于前兩種情況的走法之和即f(n)=f(n-1)+f(n-2)。
- 找出遞推公式后要找公式出口,即當n為1、2時的情況,顯然n=1時f(1)等于1,f(2)等于2
- f(n) =1, (n=1)
f(n) =2, (n=2)
f(n) =f(n-1)+f(n-2) ,(n>2,n為整數)
轉變成斐波那契數列的解題方法。
總之就是用迭代不用遞歸就好
public class Solution {
public int JumpFloor(int target) {
int result=0;
int f1=1;
int f2=2;
if(target<=2){
return target;
}else{
for(int i=3;i<=target;i++){
result=f1+f2;
f1=f2;
f2=result;
}
return result;
}
}
}