Java 有人能解释一下print语句执行了多少次吗
因此,让我们逐步了解这一点。假设n的值是4Java 有人能解释一下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次,直到
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行我不知道发生了什么。