运用c++,编写一个递归函数,用来输出n个元素的所有子集。例如,三个元素{a,b,c}的所有子集是:{},{a}, {b}, {c}, {a,b}, {a, c}, {b,c}和{a, b, c}
时间: 2023-11-01 21:07:10 浏览: 113
可以使用递归函数来输出n个元素的所有子集。以下是一个使用C语言编写的递归函数示例:
```c
#include <stdio.h>
void generateSubsets(char *arr, int n, int index, char *subset) {
// 输出当前子集
printf("{");
for (int i = 0; i < index; i++) {
printf("%c,", subset[i]);
}
printf("\b}\n");
// 递归基准情况
if (index == n) {
return;
}
// 递归生成子集
for (int i = index; i < n; i++) {
subset[index] = arr[i];
generateSubsets(arr, n, index + 1, subset);
}
}
int main() {
char arr[] = {'a', 'b', 'c'};
int n = sizeof(arr) / sizeof(arr[0]);
char subset[n];
generateSubsets(arr, n, 0, subset);
return 0;
}
```
运行以上代码将输出三个元素{a,b,c}的所有子集:
```
{}
{a}
{a,b}
{a,b,c}
{a,c}
{b}
{b,c}
{c}
```
阅读全文