1

很简单,我试图定义一个递归方法来返回向量的媒介。但是,我的代码不起作用,编译器没有抱怨,只是程序在调用函数时终止了。我试图一遍又一遍地查看代码。任何帮助将不胜感激: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);
}
4

2 回答 2

2

在这一行

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

你在打电话minR(vec, start),而不是minR(vec, start+1)你想象的那样。这会导致无限递归,这就是您的程序停止的原因。

你应该打电话

int temp = minR(vec, start + 1); 
于 2012-11-04T12:37:46.863 回答
2
 int temp = minR(vec, start++);

应该是这样的:

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

后缀++增加值并“返回”前一个值,这实质上是调用具有相同值的函数start

于 2012-11-04T12:37:46.940 回答