为什么这个方法会导致无限递归?

时间:2015-12-01 11:07:57

标签: java

public static int func(int n){
    int result ;
    result = func(n - 1);
    return result;
}

为什么我

  

线程“main”中的异常java.lang.StackOverflowError

当我打电话给这个方法时?

1 个答案:

答案 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;
}
相关问题