首页 > 解决方案 > 递归程序的执行流程

问题描述

下面是生成排列的函数。

我需要知道递归程序的代码执行流程,行后我很困惑,执行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();
        }
      }
    }


标签: c++recursion

解决方案


在递归搜索函数中执行直到排列大小等于 3,在返回时布尔值设为假,并为将来返回值。这里是递归树——递归树


推荐阅读