Java 有人能解释一下print语句执行了多少次吗

Java 有人能解释一下print语句执行了多少次吗,java,algorithm,performance,Java,Algorithm,Performance,因此,让我们逐步了解这一点。假设n的值是4 i从0开始,所以j这次也从0开始 j递增,直到1小于2*n即8 这意味着这次j的值将是0、1、2、3、4、5、6、7,总共是8个不同的值 i增加到1因此j这次从1开始 j仍将递增,直到小于2*n或小于8 这次j的值将是1,2,3,4,5,6,7,总共是7个不同的值。比上次少了1分 下一次,j的值将是2,3,4,5,6,7。6个不同的值 此模式将持续到j从4开始。然后,j将采用4个不同的值,循环将退出。循环在第一次迭代中运行2n次,然后每次运行1次,直到

因此,让我们逐步了解这一点。假设n的值是4

i
0
开始,所以
j
这次也从
0
开始
j
递增,直到1小于
2*n
即8
这意味着这次
j
的值将是
0、1、2、3、4、5、6、7,总共是8个不同的值

i
增加到
1
因此
j
这次从
1
开始
j
仍将递增,直到小于
2*n
或小于8 这次
j
的值将是
1,2,3,4,5,6,7
,总共是7个不同的值。比上次少了1分

下一次,
j
的值将是
2,3,4,5,6,7
。6个不同的值


此模式将持续到
j
4
开始。然后,
j
将采用4个不同的值,循环将退出。

循环在第一次迭代中运行2n次,然后每次运行1次,直到第(n+1)次迭代时运行
n

Overall RT = 2n + (2n-1) + (2n-2) + … + n =
 = (n+1)*n + (n+(n-1)+(n-2)+…+1+0) =
 = n2 + n + n*(n+1)/2 =
 = 1.5*n2 + 1.5n
请注意,本系列中有
n+1
术语

让我们从每个术语中减去
n
,然后分别相加。这给了我们
(n+1)*n
加上每个项减去n:

2n + (2n-1) + (2n-2) + … + n
这简化为:

(n+1)*n + (2n-n) + (2n-1-n) + … + (n-n)
n^2 + n + (n^2)/2 + n/2
现在,
1+2+3+…+n
的和是
(n+1)*n/2
,这正是
n+(n-1)+(n-2)+…+0
的意思:

(n+1)*n + n + (n-1) + (n-2) + … + 0
现在我们可以把它乘以:

(n+1)*n + (n+1)*n/2
这简化为:

(n+1)*n + (2n-n) + (2n-1-n) + … + (n-n)
n^2 + n + (n^2)/2 + n/2

与其说是一道编程题,不如说是一道数学题。哪一部分你不懂?你明白为什么它是
2n+(2n-1)+(2n-2)+…+n
?是因为内部循环运行2n次,外部循环每次迭代后运行(2n-1)。接下来的3行我不知道发生了什么。