c语言从自然数中取3个数进行组合之递归算法
时间: 2023-08-02 20:11:26 浏览: 195
以下是C语言实现从自然数中取3个数进行组合的递归算法:
```c
#include <stdio.h>
void combine(int n, int m, int a[], int b[], int len) {
if (m == 0) {
for (int i = 0; i < len; i++) {
printf("%d ", b[i]);
}
printf("\n");
return;
}
if (n < m) {
return;
}
b[m - 1] = a[n - 1];
combine(n - 1, m - 1, a, b, len);
combine(n - 1, m, a, b, len);
}
int main() {
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int b[3];
combine(10, 3, a, b, 3);
return 0;
}
```
其中,`combine`函数接受四个参数:`n`表示当前可选数的最大值,`m`表示还需要选几个数,`a`表示可选数的数组,`b`表示已选数的数组,`len`表示已选数的数组长度。在递归过程中,如果`m`为0,则表示已经选够了数,输出已选数的组合;如果`n`小于`m`,则表示可选数已经不足以满足要求,直接返回。否则,将当前最大的可选数选入已选数的数组中,分别递归选择下一个数和不选择当前数。
阅读全文