JZ9:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解析:
每个台阶可以看作一块木板,让青蛙跳上去,n个台阶就有n块木板,最后一块木板是青蛙到达的位置, 必须存在,其他 (n-1) 块木板可以任意选择是否存在,则每个木板有存在和不存在两种选择,(n-1) 块木板 就有 [2^(n-1)] 种跳法,可以直接得到结果。
代码:
方法1:
package JZ9;
import java.util.Scanner;
public class JZ9_M1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int target = sc.nextInt();
System.out.print(jumpFloor(target));
}
private static int jumpFloor(int target) {
if(target == 0)
return 0;
else if(target == 1)
return 1;
else{
int a = 1;
int b = 2;
for(int i = 2; i <= target; i++){
b = 2*a;
a = b;
}
return b;
}
}
}
方法2:
package JZ9;
import java.util.Scanner;
public class JZ9_M2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int target = sc.nextInt();
System.out.print(jumpFloor(target));
}
private static int jumpFloor(int target) {
if(target == 0)
return 0;
else if(target ==1)
return 1;
else
// return 1 << (target - 1);
return 2*(target - 1);
}
}