我试图了解下面的代码中语句“x = x + 1”作为“n”的函数执行了多少次:
for (i=1; i<=n; i++)
for (j=1; j<=i; j++)
for (k=1; k<=j; k++)
x = x + 1 ;
如果我没记错的话,第一个循环就会被执行n次,还有第二次n(n+1)/2次,但在第三次循环时我迷路了。也就是说,我可以数一下它会被执行多少次,但我似乎无法找到公式或用数学术语解释它。
Can you?
顺便说一句,这不是家庭作业或任何东西。我刚刚在一本书上发现并认为这是一个值得探索的有趣概念。
考虑循环for (i=1; i <= n; i++)
。看到这个循环很简单n次。我们可以将其绘制为:
* * * * *
现在,当您有两个这样的嵌套循环时,您的内部循环将循环n(n+1)/2次。注意它是如何形成一个三角形的,事实上,这种形式的数字被称为三角数 http://en.wikipedia.org/wiki/Triangular_number.
* * * * *
* * * *
* * *
* *
*
因此,如果我们将其扩展到另一个维度,它将形成一个四面体。由于我无法在此处进行 3D,请想象一下它们中的每一个都层叠在一起。
* * * * * * * * * * * * * * *
* * * * * * * * * *
* * * * * *
* * *
*
这些被称为四面体数 http://en.wikipedia.org/wiki/Tetrahedral_number,由以下公式产生:
n(n+1)(n+2)
-----------
6
您应该能够通过一个小测试程序来确认情况确实如此。
如果我们注意到6 = 3!,不难看出这种模式如何推广到更高的维度 http://en.wikipedia.org/wiki/Figurate_number#Triangular_numbers:
n(n+1)(n+2)...(n+r-1)
---------------------
r!
Here, r是嵌套循环的数量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)