这是递归吗?

dre*_*erD -2 c++ recursion loops function definition

我已经从递归章节中的斯坦福大学CS106B课程的教科书中读到了这段代码.这个递归函数使用循环.尽管在递归调用之间发生分解,并且循环只是尝试不同的组合,但此函数是否仍然限定了递归的定义?

输出简介:生成集合中字符串排列的代码,例如"ABC" - >"ACB","BCA"....

Set<string> generatePermutations(string str) {
  Set<string> result;
  if (str == "") {
     result += "";
  } else {
    for (int i = 0; i < str.length(); i++) {
      char ch = str[i];
      string rest = str.substr(0, i) + str.substr(i + 1);
      for (string s : generatePermutations(rest)) {
        result += ch + s;
      }
    }
  }
  return result;
}
Run Code Online (Sandbox Code Playgroud)

Jiz*_*zle 7

是的,调用自身的方法是递归的定义