我想要一個遞歸方法計算給定字符串中出現多少個字母「e」的實例。我的測試字符串是Count my e's please!
。這是迄今爲止代碼:遞歸方法中的StackOverflowError
public static int showE(String s, int count, int index)
{
if (index == -1) return count;
String e = "e";
int i = s.indexOf(e, index);
if (i != -1) count ++;
return showE(s, count, i);
}
當我調試的代碼,int i
將保持在9,而不是通過每次調用增加。
我認爲,因爲代碼,最後一行使用int i
作爲輸入,它將在該方法中的簽名集int index
通過每個呼叫的測試字符串至9,15和18。一旦字母e不再被檢測到,我認爲int i
將發送-1到簽名,然後int count
將返回到主方法。但是,調試表明int i
將通過每次調用導致StackOverflowError設置爲9。如何解決這個問題?
編輯:這是響應斯蒂芬C.代碼很抱歉的格式:
public static int showE(int count, int index)
{
String e = "e";
index = s.indexOf(e, 0)
for(int i = index; i = < s.length() - 1; i++)
{
if (index == e) count++;
}
return count;
}
幾乎總是問題與停止條件。 – 2013-03-10 00:13:50
爲什麼你使用遞歸方法呢? – Rob 2013-03-10 00:14:39
@Rob:我假設OP正在嘗試遞歸,因爲循環會更容易理解。 – Ash 2013-03-10 00:15:43