递归解决方案,找到两个字符串的匹配索引

时间:2013-07-19 16:16:03

标签: recursion

下面的代码将返回两个字符串的匹配起始索引的随机值。 例如,如果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

1 个答案:

答案 0 :(得分:1)

您需要在上一个return上添加else声明。

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

由于您没有显式返回此递归调用的结果,因此返回了一个垃圾值,这就是您获得如此奇怪结果的原因。