一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。
当青蛙即将跳上n级台阶时,共有两种跳法。一种是从n-1级台阶跳一步到n级,另外一种是从n-2级台阶跳到n级,所以求到n级台阶的所有可能性f(n)就转变为了求到n-2级台阶的所有可能性f(n-2)和到n-1级台阶的所有可能性f(n-1)之和,以此类推至最后f(2)=f(0)+f(1)=1+1。递推公式就是f(n) = f(n - 1) + f(n - 2)。
代码实现如下:
import java.util.Scanner;
public class Jump {
public static int jump(int n){
if(n==0){
return 0;
}
else{
int[] dp=new int[3];
dp[0]=1;
dp[1]=2;
for(int i=2;i<n;i++){
dp[i%3]=dp[(i-1)%3]+dp[(i-2)%3];
}
return dp[(n-1)%3];
}
}
public static void main(String[] args){
System.out.println("请输入台阶数:");
try (Scanner input = new Scanner(System.in)) {
int n=input.nextInt();
int result = jump(n);
System.out.println("共有"+result+"种方法。");
}
}
}