我是第一個C++類中的編程學生,最近我們給了一個任務來實現遞歸程序,該程序在給定字符串中查找給定子字符串的第一個匹配項。這個遞歸程序堆棧溢出錯誤? - C++
例如:
int StringIndex("Mississippi", "sip"); // this would return 6
我們給出是使用遞歸輔助函數,它的索引作爲參數的提示。
以下是我迄今所做的:
int index_of(string s, string t)
{
int index = 0;
if (s[index] == NULL)
return -1;
else if (starts_with(s, t, ++index))
{
return index;
}
return index_of(s, t);
}
bool starts_with(string s, string t, int index)
{
if (t[index] != s[index] || s[index] == NULL)
return false;
return starts_with(s, t, ++index);
}
我得到一個堆棧溢出錯誤,我不明白爲什麼。那麼有人會幫助我理解爲什麼我會得到這個錯誤?並幫助我指出如何解決它的正確方向?
嘗試使用調試程序逐步運行例程,或者如果您不想陷入調試程序,請在函數的各個位置放置printf()調用。然後運行你的程序,把輸出重定向到一個文件,當它崩潰後,從文件內容中檢查文件的內容......你將能夠看到你的程序正在做什麼,這將變得清楚爲什麼它無限遞歸併溢出堆棧。 – 2010-02-21 20:20:49