나는 재귀 방법은 문자 "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로 설정한다고 생각했습니다. 편지 전자가 더 이상 발견 된 후, 나는 int i
보낼 것이라고 -1로 서명 생각하지, 다음 int count
다시 main 메소드에 리턴됩니다. 그러나 디버깅을 통해 int i
은 StackOverflowError로 이어지는 각 호출을 통해 9로 설정됩니다. 이 문제를 어떻게 해결할 수 있습니까?
편집 :
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;
}
거의 항상 문제의 정지 조건. –
왜 재귀 적 방법을 사용합니까? – Rob
@Rob : 루프가 이해하기 쉽기 때문에 OP가 재귀를 실험하고 있다고 가정합니다. – Ash