一段楼梯共n级台阶,每次只能走一级,或两级,问共有多少种走法? 输入描述: 输入包含一个整数n (1 ≤ n ≤ 30) 输出描述: 输出一个整数,即小乐乐可以走的方法数。
时间: 2024-11-25 09:14:55 浏览: 13
问题描述:有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法。
5星 · 资源好评率100%
这是一个经典的动态规划问题,通常被称为“爬楼梯”问题。我们可以使用斐波那契数列的思想来求解,因为每次可以选择上一级或两级台阶,这就形成了递推的关系。对于每一步,有两种选择:要么上一级,要么上两级,所以当前步数的走法就是前一步走法加上前两步走法。
设f(n)表示到达第n级台阶的方式数,那么有递推公式:
- f(1) = 1(直接上一级)
- f(2) = 2(上一级或直接到第二级)
- 对于n > 2,f(n) = f(n-1) + f(n-2),即从n-1级走上来一种,从n-2级走上两级也有一种。
因此,你可以编写一个C程序来计算f(n)的值,例如:
```c
#include <stdio.h>
int climbStairs(int n) {
if (n <= 0) return 0;
if (n == 1) return 1;
if (n == 2) return 2;
return climbStairs(n-1) + climbStairs(n-2);
}
int main() {
int stairs;
printf("请输入楼梯级数: ");
scanf("%d", &stairs);
printf("共有 %d 种走法.\n", climbStairs(stairs));
return 0;
}
```
阅读全文