我正在教自己在java中递归调用方法.我一直StackOverFlowError在实施我的实施:
public class LimitedRecursion {
public void m(int limit) {
if (limit == 0) {
System.out.println("finished2");
}
m(limit - 1);
}
}
Run Code Online (Sandbox Code Playgroud)
我已经将限制设置为42.有人能指出我正确的方向吗?它应该终止一次limit == 0
这不会完成递归,因为在满足条件时不退出方法,并且仍然进行下一个递归调用(m(limit - 1);):
if (limit == 0) {
System.out.println("finished2");
}
m(limit - 1);
Run Code Online (Sandbox Code Playgroud)
这将结束递归:
if (limit == 0) {
System.out.println("finished2");
return;
}
m(limit - 1);
Run Code Online (Sandbox Code Playgroud)