问题描述:
一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法
问题分析:
递归代码实现如下:
public static int frogJump(int n) {
if(n == 1){ //递归结束条件
return 1;
}else if(n == 2){//递归结束条件
return 2;
}else {
return frogJump(n-1)+frogJump(n-2);
}
}
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入台阶的个数");
int n= scan.nextInt();//用n来接收台阶的个数
int num=frogJump(n);//跳台阶的方式用num接收
System.out.println(n+"阶台阶一共有"+num+"种跳台阶方式");
}
非递归代码实现如下:
public static int frogJump2(int n){
//非递归方式实现
if(n==1){
return 1;//当台阶为1时,只有一种跳台阶的方式
}else if(n==2){
return 2;//当台阶为2时,只有两种跳台阶的方式
}
int f1 = 1;
int f2 = 2;
int cur = 0;
for (int i = 3; i <= n; i++) {//i表示台阶数
cur = f1 + f2;//cur表示的是当前台阶有几种跳台阶方式
f1 = f2;
f2 = cur;
}
return cur;
}
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入台阶的个数");
int n= scan.nextInt();//用n来接收台阶的个数
int num=frogJump2(n);//跳台阶的方式用num接收
System.out.println(n+"阶台阶一共有"+num+"种跳台阶方式");
}