小明刚刚看完电影《第 39 级台阶》。离开电影院的时候,他数了数礼堂前的台阶数,恰好是 39 级!
站在台阶前,他突然又想着一个问题:
如果我每一步只能迈上 1 个或 2 个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完 39 级台阶,有多少种不同的上法呢?
请你利用计算机的优势,帮助小明寻找答案。
对于这道题目,很容易就能想到用递归来解决问题,但对于题目要求有些细节要注意,
- 第一步先迈左脚
- 左右脚交替,最后一步迈右脚,走偶数步
public class 第39级台阶 {
static int count=0;
//左脚(也就是奇数步的情况)
public static int left(int i) {
if(i==0)
return 0;
if(i==1) {
count++;
return 1;//左脚位于第一级台阶,种数为1(题目说,先迈左脚)
}
else {
return right(i-1)+right(i-2);
}
}
//右脚(也就是偶数步的情况)
public static int right(int i) {
if(i==0){
count++;
return 1;
}
if(i==1) return 0;//因为先迈左脚,所以在第1级台阶右脚种数为0
else {
return left(i-1)+left(i-2);
}
}
public static void main(String[] args) {
right(39);
System.out.println(count);//直接写System.out.println(right(39));也行,因为返回的就是种数
}
}