题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解题思路:
百度百科:斐波那契数列
斐波那契数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …
1.当青蛙第一次跳1级台阶时,跳法为f(n-1);
2.当青蛙第一次跳2级台阶时,跳法为f(n-2);
…… ……
3.当青蛙第一次跳i级台阶时,剩余跳法为f(n-i);
4.所以f(n)=f(n-1)+f(n-2)+…+f(1)
f(n-1)=f(n-2)+f(n-3)+…+f(1)
简化后可得f(n)=2*f(n-1)
实际仍为斐波那契数列
实际操作:
public int JumpFloorII(int target) {
if (target==1) return 1;
else return 2*JumpFloorII(target-1);
}