三重嵌套循环中的这条语句执行多少次?

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。

以上是关于三重嵌套循环中的这条语句执行多少次?的主要内容,如果未能解决你的问题,请参考以下文章

自学Linux Shell12.6-嵌套循环for命令

在VB中 for 循环嵌套语句的用法语解释(必须清楚!!)

if语句,for循环,while循环,do while循环,无限循环,循环嵌套

递增循环是 R 中三重嵌套循环的正确方式

for循环执行顺序?

无限循环与嵌套循环