C语言源代码:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢
时间: 2024-09-18 10:13:02 浏览: 36
C语言项目爬楼梯的两种实现方法参考
这个问题描述的是著名的“爬楼梯”问题,通常用动态规划来解决。在C语言中,你可以通过创建一个数组或者递归函数来计算不同阶数楼梯的不同爬法。以下是简单的递归解决方案:
```c
#include <stdio.h>
int climbStairs(int n) {
if (n <= 0) return 0; // 如果台阶数小于等于0,没有方法
if (n == 1 || n == 2) return n; // 只有一阶或两阶的情况,只有一种方法
int f1 = climbStairs(n - 1); // 上一步一阶
int f2 = climbStairs(n - 2); // 上一步两阶
return f1 + f2; // 返回所有可能的方法总数
}
int main() {
int n;
printf("请输入你要爬的台阶数:");
scanf("%d", &n);
printf("有 %d 种不同的方法爬到第%d阶。\n", climbStairs(n), n);
return 0;
}
```
在这个程序中,`climbStairs` 函数表示从零开始到 `n` 级楼梯的爬法,当 `n` 足够小,可以直接返回结果,较大的 `n` 则利用已经计算过的较小值进行组合。
阅读全文