需要了解的是,在返回语句之后为什么会回到第二行

时间:2014-07-08 06:28:59

标签: java

public class CoreTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        System.out.println(goFigure(60));
        }

    public static int goFigure(int x)
    {
    if (x < 100)
     x = goFigure(x + 10);

    return (x - 1);
    }
}

以上是java代码,有JAVA方法名为goFigure()。我从main方法调用了这个方法。在这里,我得到输出为95。

我调试了这段代码,但面临疑问,即在执行return语句后,它将转到x = goFigure(x + 10)。需要理解为什么它会走这条路。

请让我理解这个概念。

1 个答案:

答案 0 :(得分:2)

     goFigure(60)
         goFigure(70)
             goFigure(80)
                 goFigure(90)
                     goFigure(100)
                     return 99
                 return 98
             return 97
         return 96
     return 95

每个调用都有自己的参数x(可能还有局部变量)。

所以你从60到达100,需要5个递归调用,60 + 4 * 10 + 5 * -1 = 95