【发布时间】:2023-03-25 17:55:01
【问题描述】:
代码没有问题,而是逻辑问题
我想知道为什么在反转的数组代码块中n的值被认为是5而不是7?我认为该值是 7 而不是 5。据我了解,n 值来自 (1+2+3+4+5)/2 表示 7.5 但在第一个 for 循环中取为 7 那么为什么取为 5在第二个循环中?
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
reverse(arr, arr.length);
}
public static void reverse(int[] a, int n) {
int i, k, temp;//threee int variable is created
for (i = 0; i < n / 2; i++) // n value is 15/2= 7.5 here
{ temp = a[i];
a[i] = a[n - i - 1];
a[n - i - 1] = temp;
}
/*printing the reversed array*/
System.out.println("Reversed array is: ");
for (k = 0; k < n; k++) // why the n value considered as 5 here?
{ System.out.print(a[k] + " ");
}
}
【问题讨论】:
-
N 是数组长度不是总和