내가 입력 한 숫자가 두 배로되는 출력을 얻으려고합니다. 내 예에서 , 난 5를 넣어, 내 출력은 10, 8, 6, 4, 2되고 싶어하지만왜 재귀 Java 메소드에서 "스레드의 예외"메인 "java.lang.StackOverflowError"가 발생합니까?
Exception in thread "main" java.lang.StackOverflowError
at HelloWorld.recursion(HelloWorld.java:13)
at HelloWorld.recursion(HelloWorld.java:13)
at HelloWorld.recursion(HelloWorld.java:13)
at HelloWorld.recursion(HelloWorld.java:13)
그러나 말하는 오류가 발생, 난 내하고 유사한 코드를 본 적이 제대로 했어, 내가 뭘 잘못 했니? 13 행이 왜 잘못 되었습니까?
public class HelloWorld{
public static void main(String []args){
System.out.println(recursion(5));
}
public static int recursion(int x){
int temp = x--;
if(x == 0){
return 0;
}
else if(x > 0){
return recursion(temp) + x*2;
}
return -1;
}
}
스택 오버플로에 대해 알고 있습니까? –
사전 및 후 지정 감소 사이의 차이점을 알고 있습니까? – tkausl
'temp == x의 초기 값'이기 때문에. 그래서 당신은'recursion'을 이전 시간과 같은 값으로 호출합니다. –