gpt4 book ai didi

java - 使用递归打印从 [0,0,0,0] 到 [9,9,9,9]I 的数组

转载 作者:行者123 更新时间:2023-11-30 06:35:25 25 4
gpt4 key购买 nike

我只想使用递归打印从 [0,0,0,0] 到 [9,9,9,9] 的数组。首先,我编写的代码如下:

public class PrintNumber {
public static void main(String[] args) {
int N = 4;
int[] number = new int[N];
PrintNumber printNumber = new PrintNumber();
printNumber.printNum(number,0);
}
public void printNum(int[] number, int bit) {
if (bit == number.length ) {
System.out.println(Arrays.toString(number));
return;
}
for (int i = 0; i < 10; i++) {
number[bit] = i;
/******** something goes wrong here ********/
printNum(number, ++bit);
/******** something goes wrong here ********/
}
}
}

如您所见,代码不多,但不起作用。所以我调试了我的代码,发现++bit(代码的最后一行)应该写成bit+1。然后,效果很好。

但是我真的很困惑,这是为什么呢? ++bitbit+1 都是将位加 1 ,为什么它对 ++bit 不起作用而有效对于位+1

非常感谢。

最佳答案

++bitbit + 1 之间是有区别的。表达式++bit 脱糖后本质上是bit = bit + 1*。所以你的路线就变成了。

printNum(number, bit = bit + 1);

因此变量 bit 的实际值正​​在变化,并且由于您在循环中调用它,因此该值将继续增加,这是不希望的。最终,当 bit 对于数组而言太大时,您会收到 ArrayIndexOutOfBoundsException

<小时/>

* 它实际上可能脱糖为更高效的 JVM 指令,但从语义上讲,它应该是等效的。

关于java - 使用递归打印从 [0,0,0,0] 到 [9,9,9,9]I 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45267882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com