题目
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解
如果上一步跳 1 步到达第 n 个台阶,说明上一步在第 n-1 个台阶。已知跳到第n-1个台阶的方法数为f[n-1]
如果上一步跳 2 步到达第 n 个台阶,说明上一步在第 n-2 个台阶。已知跳到第n-2个台阶的方法数为f[n-2]
如果上一步跳 n 步到达第 n 个台阶,说明上一步在第 0 个台阶。已知跳到 第0个台阶的方法数为f[0]
那么总的方法数就是所有可能的和。也就是 f(n)=f(n-1)+f(n-2)+……f(1)+f(0)
显然初始条件f[0] = f[1] = 1
所以我们就可以先求f[2],然后f[3]…f[n-1], 最后f[n]
所以
public class JZ9 {
public static int JumpMethods(int n) {
if (n==0) return 1;
if (n==1) return 1;
int method=0;
for(int i=0; i<n; i++){
method += JumpMethods(i);//相当于f(n)=f(0)+f(1)+f(2)+...+f(n-1)
}
return method;//返回f(n)
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(JumpMethods(4));//结果为8
}
}