这是一个简单的递归函数,可以反向打印数组元素。
当我调用print语句上面的函数时,它给我的索引是-1outOfBoundException
。当我在调用函数之前打印时,它似乎工作正常。我认为这与变量的深度复制有关,但我不知道正确的解释。有人能给我一个恰当的答案吗?
int[] arr = {1,2,3};
int n = arr.length;
print(arr,n-1);
这会导致错误:
public static void print(int[] arr, int n)
{
if(n<0)
return;
print(arr,--n);
System.out.println(arr[n]);
}
这不会:
public static void print(int[] arr, int n)
{
if(n<0)
return;
System.out.println(arr[n]);
print(arr,--n);
}
1条答案
按热度按时间b4wnujal1#
键入
--n
与键入n--
不同。第一个将递减值,然后读取值。
而第二个将读取该值,然后将其递减。
关于Java一元运算符的更多信息可以在这里找到。
Assignment, Arithmetic, and Unary Operators - The Java Tutorials (Oracle)