第39级台阶 小明刚刚看完电影《第39)级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级! 站在台阶前,他突然又想着一个问题:如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,用递归实现,用C语言编写
时间: 2023-12-05 12:05:52 浏览: 101
使用C++递归求解跳台阶问题
5星 · 资源好评率100%
这是一道典型的递归问题,可以使用递归方式求解。考虑到只能迈1个或2个台阶,那么上完n级台阶的方案数就等于上完n-1级和n-2级台阶方案数之和。同时,题目要求最后一步必须是右脚迈上去,也就是说,如果n是奇数,方案数为0。
以下是用C语言实现的代码:
```
#include <stdio.h>
int num_of_ways(int n) {
if (n % 2 == 1) { // 如果n是奇数,方案数为0
return 0;
} else if (n == 0) { // 如果n是0,说明已经上完了所有台阶,方案数为1
return 1;
} else if (n == 1) { // 如果n是1,说明只能迈1个台阶,方案数为0
return 0;
} else if (n == 2) { // 如果n是2,说明只能迈1个或2个台阶,方案数为1
return 1;
} else {
return num_of_ways(n-1) + num_of_ways(n-2); // 递归计算方案数
}
}
int main() {
int n;
printf("请输入台阶数:");
scanf("%d", &n);
int result = num_of_ways(n);
printf("方案数为:%d\n", result);
return 0;
}
```
首先判断n是否是奇数,如果是奇数直接返回0;如果n等于0,说明已经上完了所有台阶,方案数为1;如果n等于1,说明只能迈1个台阶,方案数为0;如果n等于2,说明只能迈1个或2个台阶,方案数为1。如果n大于2,则递归计算上完n-1级和n-2级台阶的方案数之和。最终输出结果即可。
阅读全文