关于java中递归方法执行的困惑

时间:2015-12-17 09:37:51

标签: java recursion

我有一个很大的递归方法,无法理解执行。假设我们有一个递归方法如下:

  private void recursiveMethod(){
    //execute some code 1

    if(someValue){
        recursiveMethod();
    }

    //execute some other code 2
}

和方案:

  1. 致电recursiveMethod()
  2. 如果someValue真的回想起来
  3. someValue因为错误
  4. 必须执行code 2
  5. 但是在这个场景完成后,还有第二个code 2执行 - 可能是从第一个方法运行开始,在递归方法中是正常的吗?

2 个答案:

答案 0 :(得分:3)

是的,这是正常的。当递归调用返回时,它将在递归调用之后继续执行。如果您不想要这种行为,可以在递归调用之后返回,如下所示:

private void recursiveMethod(){
    //execute some code 1

    if(someValue){
        recursiveMethod();
        return;
    }

    //execute some other code 2
}

答案 1 :(得分:1)

通常在return之后添加someValue == true(在回忆此方法后)