有n步台阶,一次只能上1步或2步,共有多少种走法。用c语言编程
时间: 2024-02-28 16:55:57 浏览: 22
下面是用递归法实现的C语言代码:
```c
#include <stdio.h>
int climbStairs(int n) {
if (n == 1 || n == 2) {
return n;
} else {
return climbStairs(n-1) + climbStairs(n-2);
}
}
int main() {
int n;
printf("请输入台阶数:");
scanf("%d", &n);
printf("共有%d种走法\n", climbStairs(n));
return 0;
}
```
也可以用非递归的动态规划方法实现,代码如下:
```c
#include <stdio.h>
int climbStairs(int n) {
if (n == 1 || n == 2) {
return n;
}
int dp[n];
dp[0] = 1;
dp[1] = 2;
for (int i = 2; i < n; i++) {
dp[i] = dp[i-1] + dp[i-2];
}
return dp[n-1];
}
int main() {
int n;
printf("请输入台阶数:");
scanf("%d", &n);
printf("共有%d种走法\n", climbStairs(n));
return 0;
}
```