一、问题描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
二、算法分析
设f(n)表示青蛙跳到第n阶台阶总共的跳法,则
f(n-1)表示青蛙跳到第n-1阶台阶总共的跳法
f(n-2)表示青蛙跳到第n-2阶台阶总共的跳法
。。。
f(1)表示青蛙调到第1阶台阶总共的跳法
所以,
f(n) = f(n-1)+f(n-2)+...+f(2)+f(1) 一式
观察可知,这是个迭代公式,用n-1替代n可得
f(n-1) = f(n-2)+f(n-3)+...+f(2)+f(1), n>1 二式
结合一式和二式可得
f(n) = 2*f(n-1) ,n>1
三、算法设计
利用上面分析出的递推公式写程序
f(n) = 2*f(n-1) ,n>1
f(1) = 1
四、代码实现
public int jumpFloorII(int target){
if(target <= 0) return 0;
if(target == 1) return 1;
return 2*jumpFloorII(target-1);
}