java使用递归打印从[0,0,0,0]到[9,9,9,9]I的数组
我只想使用递归打印一个从[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
。然后,它工作得很好
但我真的很困惑,为什么++bit
和bit+1
都是将位增加1,为什么它不适用于++bit
而适用于bit+1
非常感谢
# 1 楼答案
在
++bit
和bit + 1
之间有区别。表达++bit
脱糖为本质上的bit = bit + 1
*。所以你的台词变成了所以变量
bit
的实际值在变化,因为你在循环中调用它,这个值会不断增加,这是不需要的。最终,当bit
对于数组来说太大时,会得到一个ArrayIndexOutOfBoundsException
*它实际上可能会被分解成更高效的JVM指令,但在语义上,它应该是等效的