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 に答える