这段代码中java.lang.stackoverflower错的原因是什么?

0 java recursion

我在运行此代码后得到java.lang.stackoverflower错的原因是什么?

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

class Output {         
    public static void main(String args[]) {             
        recursion obj = new recursion(); 
        System.out.print(obj.func(12)); 
     } 
} 
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 7

你没有停止条件.你总是调用func (n - 1),因此得到一个无限的递归调用链,直到堆栈溢出.

正确的递归方法必须具有停止条件.例如,停止条件可能是n达到0时:

public static  int func (int n) {   
    if (n <= 0)
        return 1;          
    int result = func (n - 1);             
    return result; 
} 
Run Code Online (Sandbox Code Playgroud)