用C语言编写全排列递归
时间: 2024-05-05 08:21:34 浏览: 93
c语言递归算法实现数列全排列.pdf
以下是用C语言编写的全排列递归程序:
```c
#include <stdio.h>
void swap(char *a, char *b) {
char temp = *a;
*a = *b;
*b = temp;
}
void permute(char *str, int left, int right) {
if (left == right) {
printf("%s\n", str);
return;
}
for (int i = left; i <= right; i++) {
swap((str + left), (str + i));
permute(str, left + 1, right);
swap((str + left), (str + i));
}
}
int main() {
char str[] = "ABC";
int n = sizeof(str) / sizeof(char);
permute(str, 0, n - 2);
return 0;
}
```
这个程序的输出结果是:
```
ABC
ACB
BAC
BCA
CBA
CAB
```
其中 `swap` 函数用于交换两个字符的位置,`permute` 函数用于生成全排列,`main` 函数则是程序的入口。在 `main` 函数中,我们首先定义一个字符数组 `str`,然后计算出其长度 `n`,最后调用 `permute` 函数生成全排列。
阅读全文