2013-07-19 28 views
0

下面我的代碼將爲兩個字符串的匹配起始索引返回隨機值。 例如,如果s = Mississippi,並且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 
+0

首先,你知道'=='比較是否適用於字符串? –

+0

@ user7348您可以通過點擊綠色複選標記來接受我的答案。請這樣做! – jlars62

回答

1

您需要在最近的else上輸入return聲明。

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

既然你沒有明確返回這個遞歸調用的結果,正在返回垃圾值這就是爲什麼你得到這樣奇怪的結果。

+0

好的工作jlars62。我多麼尷尬!對不起,我無法讚揚你。我剛加入。而且,正如你所看到的,我剛開始編程。 – user7348