我在运行此代码后得到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)
你没有停止条件.你总是调用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)
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |