具有终止条件Java的递归

时间:2015-06-17 10:08:31

标签: java recursion

我正在教自己在java中递归调用方法。我一直在实施StackOverFlowError

    public class LimitedRecursion {
      public void m(int limit) {
        if (limit == 0) {
          System.out.println("finished2");
        }
        m(limit - 1);
      }
     }

我已将限制设定为42。有人能指出我正确的方向吗?它应该终止limit == 0

3 个答案:

答案 0 :(得分:8)

这不会完成递归,因为您在满足条件时不退出方法,并且您仍然进行下一次递归调用(m(limit - 1);):

    if (limit == 0) {
      System.out.println("finished2");
    }
    m(limit - 1);

这将结束递归:

    if (limit == 0) {
      System.out.println("finished2");
      return;
    }
    m(limit - 1);

答案 1 :(得分:1)

正确的递归可以是:

    public class LimitedRecursion {
public void m(int limit) {
    if (limit == 0) {
        System.out.println("finished2");
    } else {
        m(limit - 1);
    }
}

}

答案 2 :(得分:0)

像这样,添加return statement

 public static void main(String[] args) {
        System.out.println(m(5));
    }

    public static String m(int limit) {
        if (limit == 0) {
            return "finished";
        }
        return m(limit - 1);
    }

<强>输出

finished