c++ - 递归程序的执行流程
问题描述
下面是生成排列的函数。
我需要知道递归程序的代码执行流程,行后我很困惑,执行search()
后的两行我不明白search()
,它应该在最后或每次执行。有人可以逐步解释程序的执行流程吗?
vector<int> permutation;
int n = 3;
bool chosen[n + 1];
void search() {
if (permutation.size() == n) {
// process permutation(print permutation vector)
} else {
for (int i = 1; i <= n; i++) {
if (chosen[i]) continue;
chosen[i] = true;
permutation.push_back(i);
search();
chosen[i] = false;
permutation.pop_back();
}
}
}
解决方案
在递归搜索函数中执行直到排列大小等于 3,在返回时布尔值设为假,并为将来返回值。这里是递归树——递归树
推荐阅读
- python - Matplotlib:从二进制数据填充
- html - 如何显示位置在通过 XMLHttpRequest 访问的 JSON 文件中的图像?
- java - Java Map computeIfAbsent 问题
- laravel - 如何在 Laravel 中直接访问数组或对象?
- git - 如果我意外提交特定文件,需要 git 拒绝提交
- sql - SQL Scalar 函数从存储过程运行很长时间
- cakephp - CakePHP 3.6:手动删除表(文件/目录)
- c++ - 我遇到了内存泄漏,但我不知道为什么
- azure-active-directory - AADSTS70002:验证凭据时出错。AADSTS50126:用户名或密码无效
- c# - 如何将方法或事件绑定到 WPF 中 ListViewItem 模板中的按钮?