给定正整数 n ,输出所有数字1和2相邻的1~n的全排列,用c++递归实现。无其他头文件无其他函数无数组无std::string超级简单入门级萌新也能懂适合初学者理解
时间: 2024-04-15 10:31:12 浏览: 248
CC++全排列..1--n的全排列以及字符串的全排列
以下是使用 C++ 递归实现输出所有数字 1 和 2 相邻的 1~n 的全排列的代码示例:
```cpp
#include <iostream>
// 递归函数,参数分别为当前数字、目标数字 n、当前排列
void generatePermutations(int currNum, int n, std::string currPermutation) {
// 如果当前数字大于目标数字,表示已完成一次排列,输出结果
if (currNum > n) {
std::cout << currPermutation << std::endl;
return;
}
// 在当前排列的基础上加上 1,继续递归
generatePermutations(currNum + 1, n, currPermutation + "1");
// 在当前排列的基础上加上 2,继续递归
generatePermutations(currNum + 1, n, currPermutation + "2");
}
int main() {
int n;
std::cout << "请输入一个正整数 n:" << std::endl;
std::cin >> n;
std::cout << "所有数字 1 和 2 相邻的 1~" << n << " 的全排列如下:" << std::endl;
generatePermutations(1, n, "");
return 0;
}
```
这段代码通过递归生成所有数字 1 和 2 相邻的 1~n 的全排列。首先,我们定义了一个递归函数 `generatePermutations`,它接受三个参数:当前数字 `currNum`,目标数字 `n`,当前排列 `currPermutation`。在递归函数中,我们首先判断当前数字是否大于目标数字,如果是,则表示已经生成完一次排列,输出结果并返回。如果不是,我们分别在当前排列的基础上加上 1 和 2,并分别调用递归函数继续生成下一个数字的排列。
在主函数中,我们首先读取用户输入的正整数 n,然后调用递归函数生成并输出所有数字 1 和 2 相邻的 1~n 的全排列。
希望这个代码示例对你有所帮助,如果有任何疑问,请随时提问。
阅读全文