很简单,我试图定义一个递归方法来返回 vector 的媒介。但是,我的代码无法正常工作,编译器没有任何抱怨,但是程序只是在调用函数时终止。我试图一次又一次地查看代码。任何帮助将不胜感激:D

int minR(vector<int> vec, size_t start){
  if(start == vec.size()-1){return vec[start];}
  int temp = minR(vec, start++);
  return ((vec[start] < temp) ? vec[start] : temp);
}

最佳答案

在这条线

int temp = minR(vec, start++);

您正在 call minR(vec, start),而不是您认为的minR(vec, start+1)。这将导致无限递归,这就是程序停止的原因。

你应该打电话
int temp = minR(vec, start + 1);

关于c++ - C++简单但棘手的递归,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13218554/

10-13 08:27