【问题标题】:Misunderstanding the prefix increment对前缀增量的误解
【发布时间】:2019-01-16 07:57:25
【问题描述】:

我不明白这种方法是如何工作的。 我运行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);
        }
    }

【问题讨论】:

标签: java increment prefix


【解决方案1】:
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() 的每次执行都有自己的该变量的副本,并且在一次执行中更改值不会影响本地的值其他执行的变量。

【讨论】:

    猜你喜欢
    • 2017-12-12
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 2018-09-08
    • 2011-03-12
    • 2014-04-30
    • 2014-08-11
    相关资源
    最近更新 更多