c语言楼梯有n阶台阶,上楼可以一步上1阶,2阶非递归
时间: 2024-10-03 18:04:09 浏览: 68
在 C 语言中,如果你想要模拟一个人上 n 阶台阶,每次只能走 1 或 2 步,且不允许使用递归的方法,我们可以采用循环结构来解决这个问题。下面是一个简单的非递归算法示例:
```c
#include <stdio.h>
void climbStairs(int n) {
int steps[3] = {0}; // 初始化数组存储每步走的情况
if (n == 0 || n == 1) {
printf("只有一种走法:\n");
return;
}
steps[1] = 1; // 第二层可以直接走两步到达
steps[2] = 2; // 第三层有两种可能,一步一阶或一步两阶
for (int i = 4; i <= n; ++i) {
steps[i % 3] = steps[(i - 1) % 3] + steps[(i - 2) % 3]; // 更新第 i 层的走法数
}
printf("上到第 %d 阶台阶共有 %d 种走法。\n", n, steps[n]);
}
int main() {
int nSteps;
printf("请输入台阶数:");
scanf("%d", &nSteps);
climbStairs(nSteps);
return 0;
}
```
在这个程序中,我们使用了一个长度为 3 的数组 `steps` 来记录前 n 步走到 n 阶的走法。从第三层开始,每一层的走法都是前两层之和。然后通过 `% 3` 取余操作保持数组索引在 0、1、2 之间,避免了递归。
阅读全文