c语言本关任务:用递归算法找出 5 个自然数中取 3 个数的组合。
时间: 2024-09-19 22:07:49 浏览: 68
在 C 语言中,你可以使用递归函数来生成从五个自然数中取出三个数的所有组合。这种问题通常可以用“组合”数学中的“三元组选择”来解决,也就是从 n 个元素中选取 k 个元素(n=5, k=3)。下面是一个简单的递归解决方案:
```c
#include <stdio.h>
// 递归函数,用于生成组合
void generate_combinations(int arr[], int n, int start, int combination[]) {
// 如果已经选择了 k 个数,打印组合并返回
if (start == 3) {
for (int i = 0; i < 3; i++) {
printf("%d ", combination[i]);
}
printf("\n");
return;
}
// 对于数组中的每个元素,递归地生成剩余位置的选择
for (int i = start; i < n; i++) {
combination[start] = arr[i]; // 把当前元素放入组合
generate_combinations(arr, n, start + 1, combination); // 递归下一个位置
}
}
int main() {
int numbers[] = {1, 2, 3, 4, 5};
int size = sizeof(numbers) / sizeof(numbers[0]);
// 初始化一个数组来保存当前的组合
int combination[3];
generate_combinations(numbers, size, 0, combination);
return 0;
}
```
当你运行这个程序时,它会输出所有可能的由 1 到 5 的数字组成、长度为 3 的组合。
阅读全文