三重嵌套循环中的这条语句执行多少次?
Posted
技术标签:
【中文标题】三重嵌套循环中的这条语句执行多少次?【英文标题】:How many times does this statement in a triply-nested loop execute? 【发布时间】:2013-10-07 07:16:43 【问题描述】:这是我的问题
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
for(k=1;k<=j;k++)
x++;
现在,我想知道语句 x++;多少次迭代? 我想知道解的公式。
【问题讨论】:
先搞清楚二维情况。 这是单纯形的体积,不是吗? 【参考方案1】:您正在寻找以下总和的值:
Sum(i from 1 to n)
Sum (j from 1 to i)
Sum (k from 1 to j)
1
由内而外的工作:
Sum(i from 1 to n)
Sum (j from 1 to i)
Sum (k from 1 to j)
1
= Sum(i from 1 to n)
Sum (j from 1 to i)
j
= Sum(i from 1 to n)
i(i + 1) / 2
从这里,我们得到
sum (i from 1 to n) i(i + 1) / 2
= (1/2) sum (i from 1 to n) (i2 + i)
= (1/2) (sum (i from 1 to n)i2 + sum (i from 1 to n) i)
= (1/2) (n(n + 1)(2n + 1) / 6 + n(n + 1) / 2)
然后,您可以尝试简化该多项式以获得干净、精确的值。如果您只需要渐近上限,则为 Θ(n3)。
根据Wolfram Alpha,这是
n3 / 6 + n2 / 2 + n / 3
希望这会有所帮助!
【讨论】:
+1 得到与我相同的答案! :) 也许你应该添加一个更封闭的形式:n(n+1)(2n+4)/12。以上是关于三重嵌套循环中的这条语句执行多少次?的主要内容,如果未能解决你的问题,请参考以下文章