public static int func(int n){
int result ;
result = func(n - 1);
return result;
}
为什么我
线程“main”中的异常java.lang.StackOverflowError
当我打电话给这个方法时?
答案 0 :(得分:1)
func
总是在呼唤自己。没有停止条件。每次调用都会创建一个新的堆栈帧,直到调用堆栈已满并且抛出StackOverflowError
。
递归方法应始终具有停止条件。例如 - n < 0
:
public static int func(int n){
int result;
if (n >= 0)
result = func(n - 1);
else
result = 0;
return result;
}