递归程序的执行流程

Execution flow of recursion program

本文关键字:执行流 程序 递归      更新时间:2023-10-16

下面是生成排列的函数。

我需要知道递归程序的代码执行流程,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,在返回时布尔值变为假并返回值以供将来使用。 这里是递归树--递归树