내 재귀 적 방법의이 부분에 대해서는 2보다 큰 짝수 길이의 문자열 (대소 문자 에서처럼)을 처리해야합니다. 내 문제는 내 재귀 사례를 실제로 기본 사례에 접근시키는 방법을 찾는 것입니다. 내가 반전 부분을 제대로 수행했는지 알지 못합니다. 스택 오버플로 오류가 발생하는 기본 사례로 인해 스택 오버플로 오류가 발생합니다. 여기에 문제의 방법이 있습니다. (. 문은 내가 가진 '가'내 현재 후 이상한 문자열을 처리 할 "는 null를,"이 순간은 그래서 홀수없이 내 경우에도 테스트 할 수 있습니다.)재귀를 사용하여 문자열의 인덱스를 반대로합니다.
편집 : 예 입력 : ABCDEF 출력 예 : EBCDAF
public static String revEven(String inString)
{
String tempString = new String();
if (inString.length() <= 2)
return inString;
if (inString.length() == 3)
{
tempString += inString.charAt(2);
tempString += inString.charAt(1);
tempString += inString.charAt(0);
return tempString;
}
if (inString.length() % 2 == 0)
{
return revEven(inString.substring(0, inString.length() - 1) + inString.charAt(inString.length() - 1));
}
return null;
}
- 아 지금 우리 이야기 달콤한하려고하지 않습니다 ... – aliteralmind
하하, 나는 있었으면 좋겠다. 왜 내가 오류가 발생하는지 이해합니다. 기본 케이스에 접근하려고 시도한 모든 것이 현재 솔루션보다 훨씬 의미가 있습니다. – coinbird
마지막 리턴 문에서 java.lang.StackOverflowError. 나는 그런 말을했다. 나는 또한 그것이 왜 일어나고 있는지 이해했다고 말했다. 재귀 적 메서드에 입력 한 문자열이 결코 작아지지 않기 때문에 기본 메서드를 절대 사용하지 못하기 때문에 메서드가 영원히 자신을 호출하게됩니다. – coinbird