递归写爬楼梯
#include <stdio.h>
// 定义一个函数,用来打印每次爬的台阶数
void print_steps(int steps[], int n) {
printf("一种可能的方法是:");
for (int i = 0; i < n; i++) {
printf("%d ", steps[i]);
}
printf("\n");
}
// 定义一个递归函数,用来求解所有可能的方法
void climb_stairs(int n, int steps[], int index) {
// 如果只有一个或两个台阶,直接打印结果
if (n == 1) {
steps[index] = 1;
print_steps(steps, index + 1);
} else if (n == 2) {
steps[index] = 1;
print_steps(steps, index + 1);
steps[index] = 2;
print_steps(steps, index + 1);
} else {
// 如果有多于两个台阶,可以先爬一个或两个台阶,然后递归求解剩下的台阶
steps[index] = 1;
climb_stairs(n - 1, steps, index + 1);
steps[index] = 2;
climb_stairs(n - 2, steps, index + 1);
}
}
int main() {
int n; // 输入台阶数
printf("请输入台阶数:");
scanf("%d", &n);
int steps[n]; // 定义一个数组,用来存储每次爬的台阶数
climb_stairs(n, steps, 0); // 调用递归函数,求解所有可能的方法
return 0;
}
标签:index,台阶,int,18,steps,printf,print,打卡
From: https://www.cnblogs.com/wlxdaydayup/p/17413279.html