【发布时间】:2012-07-12 17:01:44
【问题描述】:
是否有一种有效的方法来运行嵌套的 for 循环,避免任何具有相同值的计数器。显然,我可以运行一些 if 语句,如下所示,但是有没有更有效的方法?
for i = 1 to 20:
for j = 1 to 20:
if (i == j):
continue
else:
for k = 1 to 20:
if (i == k) or (j == k):
continue
else:
do something useful with these different numbers
编辑:变量不可互换,因此 [2, 1, 0] 与 [0, 1, 2] 不同。 “做一些有用的事情”将是对数字进行大约 6 次数字检查,包括对它们进行加法、平方和平方根。
感谢,对于可能不寻常的伪代码(以及不断的编辑)感到抱歉。
【问题讨论】:
-
您可以通过反转 if 的逻辑(分别为
i!=j和(i!-k) and (j!=k))来摆脱 else 部分,但这并不是真正的效率,而是可读性。 -
循环的嵌套会影响性能(由于对分支预测和内存局部性的影响),但这取决于“用这些不同的数字做一些有用的事情”的内容。
标签: performance for-loop nested-loops