为了账号安全,请及时绑定邮箱和手机立即绑定

可以解释一下print语句被执行了多少次吗

可以解释一下print语句被执行了多少次吗

慕运维8079593 2021-11-24 15:45:07
// For the below algorithm, calculate the exact number of times   // System.out.println statement is executed as a function of n. Assume n≥1    for (int i=0; i<=n; i++) {    for (int j = i; j < 2*n; j++) {    System.out. println(”1 iteration executed!”);    }    }这是解决方案,但我很难理解数学。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
查看完整描述

2 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

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

2n + (2n-1) + (2n-2) + … + n

请注意,n+1该系列中有术语。

让我们n从每个术语中减去并分别添加它们。这给我们(n+1)*n加上每一项减去 n:

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

这简化为:

(n+1)*n + n + (n-1) + (n-2) + … + 0

现在,众所周知, 的总和1+2+3+...+n(n+1)*n/2,而这正是n + (n-1) + (n-2) + … + 0

(n+1)*n + (n+1)*n/2

现在我们可以将它相乘:

n^2 + n + (n^2)/2 + n/2

这简化为:

1.5n^2 + 1.5n


查看完整回答
反对 回复 2021-11-24
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

所以让我们一步一步来。假设 n 的值为 4。

i开始于0soj也开始在0这个时间
j增量直到 1 小于2*n8
这意味着j这个时间的值将是0, 1, 2, 3, 4, 5, 6, 7,总共 8 个不同的值

i增量1所以j在开始1这段时间
j仍然将递增,直到1小于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 个不同的值,循环将退出。


查看完整回答
反对 回复 2021-11-24
  • 2 回答
  • 0 关注
  • 286 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信