0

以下の私のコードは、2 つの文字列の一致する開始インデックスのランダムな値を返します。たとえば、s = ミシシッピ、t = sip の場合、関数は 6 を返す必要があります。コードを設定して、m の値を返す直前に出力するようにしました。実際、私のプログラムは 6 を出力しますが、数百万単位のランダムな値を返します。

int index_of_sub(string s, string t, int m)
{
  if(s.length() - m < t.length())
  {
    return -1; 
  }
  if(s.substr(m, t.length()) == t)
  {
    cout << m << endl; 
    return m; 
  }
  else
  {
    index_of_sub(s, t, m + 1); 
  }
}//end index_of_sub function
int index_of(string s, string t)
{
  return index_of_sub(s, t, 0); 
}//end index_of function
4

1 に答える 1

1

return最後に声明を出す必要がありますelse

else
{
   return index_of_sub(s, t, m + 1); 
   ^^^^^^
}

この再帰呼び出しの結果を明示的に返していないため、ガベージ値が返されているため、このような奇妙な結果が得られています。

于 2013-07-19T16:20:54.667 に答える