画个图,找个递归出口,应该不难。
小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!
站在台阶前,他突然又想着一个问题:
如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?
请你利用计算机的优势,帮助小明寻找答案。
package 历届试题;
public class 第39级台阶 {
static int count=0;
static void fun(int stair,int step)
{
//stair表示剩余楼梯层数,当等于0时停止递归
//step是走过的步数,判断是否为偶数,是否符合题意
if(stair<0)return;
//stair可能出现小于0的情况,当最后只剩了一个台阶,
//但是小明想要跨两步的时候,这样是不可能的,也就是说他只能跨一步,两步是不可能出现的,
//因此也不可能是符合条件的走法。
if(stair==0)//39节楼梯全部走完
{
if(step%2==0)count++;
return;
}
fun(stair-1,step+1);
fun(stair-2,step+1);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
fun(39,0);
System.out.println(count);
}
}