我不明白这个方法是如何工作的。
我运行 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);
}
}
最佳答案
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()
的每次执行都有该变量自己的副本,并且会更改该值一次执行中的局部变量的值不会影响其他执行中的局部变量的值。
关于java - 对前缀增量的误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54212539/