编写一递归程序求出所有用7,8,9组成且各位数字互不相同的3位数就是要求7,8,9这3个数字的全排列,计算全排列可以采用递归的方法用函数void find(int k)来处理如何放第k个数,同时还要有一个数组int Pos[3来表示每个位置上的数字这样可以避免两个数字放在同一位置。
时间: 2023-06-13 22:08:56 浏览: 126
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
以下是递归程序的代码实现:
```c++
#include <iostream>
using namespace std;
int Pos[3]; // 用来存储每个位置上的数字
void find(int k) {
if (k == 3) { // 如果已经放完了3个数字
cout << Pos[0] << Pos[1] << Pos[2] << endl; // 输出这个三位数
return;
}
for (int i = 7; i <= 9; i++) { // 枚举7、8、9三个数字
bool flag = true;
for (int j = 0; j < k; j++) { // 判断这个数字是否已经被放在了前面的位置上
if (i == Pos[j]) {
flag = false;
break;
}
}
if (flag) { // 如果这个数字还没有被放在前面的位置上
Pos[k] = i; // 放在第k个位置上
find(k + 1); // 继续考虑下一个位置
}
}
}
int main() {
find(0); // 从第0个位置开始考虑
return 0;
}
```
运行结果如下:
```
789
798
879
897
978
987
```
阅读全文