-6
public static int func(int n){
int result ;
result = func(n - 1);
return result;
}
爲什麼我收到爲什麼此方法會導致無限遞歸?
異常線程 「main」 java.lang.StackOverflowError的
當我把這個方法?
public static int func(int n){
int result ;
result = func(n - 1);
return result;
}
爲什麼我收到爲什麼此方法會導致無限遞歸?
異常線程 「main」 java.lang.StackOverflowError的
當我把這個方法?
func
總是自己調用。沒有停止條件。每次調用都會創建一個新的堆棧幀,直到調用堆棧已滿並引發StackOverflowError
。
遞歸方法應該總是有停止條件。例如 - n < 0
:
public static int func(int n){
int result;
if (n >= 0)
result = func(n - 1);
else
result = 0;
return result;
}
非常感謝Mr.Eran –
那麼你會期望*會發生什麼?你會如何期待它終止? –
爲什麼不應該呢?你總是在'func'方法中調用'func'。你認爲該計劃何時會到達「回報」? – Tom
https://en.wikipedia.org/wiki/Infinite_loop#Infinite_recursion – HRgiger