C ++简单但棘手的递归

时间:2012-11-04 12:34:29

标签: c++ recursion

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

2 个答案:

答案 0 :(得分:2)

在这一行

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

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

你应该致电

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

答案 1 :(得分:2)

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

应该是这样的:

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

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

相关问题