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

Recursion 查找两个字符串匹配索引的递归解决方案,recursion,Recursion,下面的代码将为两个字符串的匹配起始索引返回随机值。 例如,如果s=Mississippi,t=sip,则函数应返回6。我设置了我的代码,这样它就可以在返回m之前打印出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())

下面的代码将为两个字符串的匹配起始索引返回随机值。 例如,如果s=Mississippi,t=sip,则函数应返回6。我设置了我的代码,这样它就可以在返回m之前打印出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
int-index\u of\u-sub(字符串s、字符串t、int-m)
{
如果(s.长度()-mcout您需要在最后一个
else
中添加
return
语句

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

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

首先,您知道
==
比较是否适用于字符串吗?@user7348您可以通过单击绿色复选标记接受我的答案。请这样做!干得好jlars62。Ho我很尴尬!对不起,我不能超过你。我刚加入。而且,正如你所知道的,我刚开始编程。