跳臺階
題目描述
一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。
AC代碼
public class Solution {
public int JumpFloor(int target) {
if(target==1)
return 1;
else if(target==2)
return 2;
else if(target==3)
return 3;
else
return JumpFloor(target-1)+JumpFloor(target-2);
}
}
題目分析
思路:跳n級臺階相當於n-1和n-2級臺階的和
原因:n級臺階就相當於n-1級再跳一次一階的和n-2級再跳一次2階的
變態跳臺階
題目描述
一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
AC代碼
public class Solution {
public int JumpFloorII(int target) {
return (int) Math.pow(2,target-1);
}
}
題目分析
f(n)=f(n-1)+f(n-2)+…+f(1)
f(n-1)=f(n-2)+…f(1)
得:f(n)=2*f(n-1)
推導出公式得出2的n-1次方