题目描述:
第39级台阶
小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!站在台阶前,他突然又想着一个问题:
如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?
请你利用计算机的优势,帮助小明寻找答案。
思考:
1.以“第几级台阶”来作为向下递归的层次;
2.每一级台阶都有 走一步 和 走两步 两种情况;
3.每次递归回来,都要对总的步数和所在的台阶进行处理;
代码:
速度有点慢~~~
#include<stdio.h>
int total = 0, num = 0; //total 总共走的台阶数/步数, num 代表有多少种走法;
int n = 39;
void steps(int cur); //cur是第几级台阶;
int main(void)
{
int cur = 0;
steps(cur);
printf("num = %d\n", num);
return 0;
}
void steps(int cur)
{
if(total % 2 == 0 && cur == n)
{
num++;
}
if(cur > n)//
return ;
cur = cur + 1; //走一步;
total++;
steps(cur);
total--;
cur--;
cur = cur + 2; //走两步;
total++;
steps(cur);
total--;
cur = cur - 2;
}