具有终止条件Java的递归

Ant*_*oth 3 java recursion

我正在教自己在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

Era*_*ran 8

这不会完成递归,因为在满足条件时不退出方法,并且仍然进行下一个递归调用(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)