C语言编程编写一递归程序求出所有用7,8,9组成,且各位数字互不 相同的3位数。
时间: 2024-05-14 08:19:00 浏览: 103
以下是使用递归实现的C语言程序:
```c
#include <stdio.h>
void findNum(int arr[], int n, int k)
{
if (n == 3) {
printf("%d%d%d\n", arr[0], arr[1], arr[2]);
return;
}
for (int i = k; i <= 9; i++) {
int flag = 1;
for (int j = 0; j < n; j++) {
if (i == arr[j]) {
flag = 0;
break;
}
}
if (flag) {
arr[n] = i;
findNum(arr, n + 1, i + 1);
}
}
}
int main()
{
int arr[3];
findNum(arr, 0, 7);
return 0;
}
```
思路解析:
- 递归函数 `findNum` 的参数 `arr` 为一个数组,用来存储当前已经找到的数字,`n` 表示当前已经找到的数字个数,`k` 表示当前可以使用的数字的最小值。
- 当 `n` 等于 3 时,表示已经找到了 3 个数字,输出即可。
- 从 `k` 开始遍历 7 到 9 之间的数字,如果该数字没有在数组 `arr` 中出现过,则将其加入 `arr` 数组中,继续递归查找下一个数字。
- 递归结束返回上一级,继续查找其他数字。
运行结果:
```
789
798
879
897
978
987
```
阅读全文