小明刚刚看完电影《第39级台阶》。离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!
站在台阶前,他突然又想着一个问题:
如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?
请你利用计算机的优势,帮助小明寻找答案。
分析:采用递归,将小明每次迈开步子分为两种选择,是走一个台阶还是走两个台阶。只需写出:1.递归的条件 2.递归终止的条件 。
C语言相关代码:
#include<stdio.h>
int num=0;//方案数
void fun(int n,int step)//n表示有多少台阶数 ,step表示步数
{
if(n<0)
return;
if(n==0)
{
if(step%2==0) num++;
return;
}
fun(n-1,step+1);
fun(n-2,step+1);
}
int main()
{
fun(39,0);
printf("%d",num);
}