误解前缀增量

时间:2019-01-16 07:57:25

标签: java increment prefix

我不知道此方法的工作原理。 我运行recur方法,输出从98开始,逐渐增加,我似乎无法理解以后会发生什么。我期望的输出是:

a=98
a=99
a=99
a=100
a=100
a=101

但是实际输出是:

a=98
a=99
a=100
a=101
a=100
a=99

我在本地的Java测试论坛中找到了这个练习。 因此,任何解释对我来说都是有用的。

public  class Test  {

    public static void main(String[] args) {
        recur(98);
    }
    public static void recur(int a) {
        if (a <= 100) {
            System.out.println("a=" + a);
            recur(++a);
            System.out.println("a=" + a);
        }
    }

1 个答案:

答案 0 :(得分:5)

recur(98)
    print "a=98"
    recur(99)
        print "a=99"
        recur(100)
            print "a=100"
            recur(101)
                do nothing
            print "a=101" // that's the value of a in recur(100) after being incremented once
        print "a=100" // that's the value of a in recur(99) after being incremented once
    print "a=99" // that's the value of a in recur(98) after being incremented once

您可能会缺少的是a是一个局部变量,这意味着recur()的每次执行都有该变量的自己的副本,并且更改一次执行的值不会影响其他执行的局部变量的值。