题目:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路:
- n=1时,只有一种跳法,Fib(1)=1;
- n=2时,有两种跳法,Fib(2)=Fib(1)+Fib(0)=2;
- n=3时,当第一次跳1阶时,后面还有Fib(3-1)种跳法;当第一次跳2阶时,后面还有Fib(3-2)种跳法;当第一次跳3阶时,后面还有Fib(3-3)种跳法。所以Fib(3)=Fib(3-1)+Fib(3-2)+Fib(3-3)=Fib(2)+Fib(1)+Fib(0);
- 推理可得,当n=n时,Fib(n)=Fib(n-1)+Fib(n-2)+…+Fib(2)+Fib(1)+Fib(0)
- 又因为,Fib(n-1)=Fib(n-2)+Fib(n-3)+…+Fib(2)+Fib(1)+Fib(0)
- 两式相减,得Fib(n)=2*Fib(n-1),即
程序:
import java.util.Scanner;
public class subject9 {
public static int JumpFloorII(int target) {
int result = 1;
if(target == 0 || target == 1) {
return target;
}
//return 2 * JumpFloorII(target - 1);
return (int) Math.pow(2, target-1);
}
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println(JumpFloorII(n));
}
}