1、青蛙跳的背景:
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法?
2、问题抽象:
根据题意我们可以把它抽象成一个分段函数,思路:
- 只有1级台阶,那根据题意有且仅有一种跳法
- 如果有2级台阶,就有2种跳法,一是分2次跳,每次跳1级,另一种是一次跳2级
- 如果台阶级数大于2,设为n的话,第一次跳的时候有2种不同的选择:
A、一次跳一级,此时跳法的次数等于后面剩下的n-1级台阶的跳法数目;
B、第一次跳二级,此时跳法的数目等于后面剩下的n-2级台阶的跳法数目
写成函数表达式也就是:
3、代码解决问题:
public class Frog {
public static int times(int n) {
//1级台阶和两级台阶的跳法
if(n == 1 || n ==2) {
return n;
}
return times(n-1)+times(n-2);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int ret = times(n);//存放跳台阶的跳法数目
System.out.println(ret);
}
}