嵌套循环迭代计数

时间:2013-05-14 23:42:17

标签: loops count

很抱歉,如果我再问一个上一个问题,但我找不到这个问题的具体答案。除了基本的迭代之外,我怎样才能为嵌套for循环迭代制作一个公式:

for (int i =0; i < N; i++)

我得到了基本循环计数迭代的基本概念:

for (int i =0; i < N; i++)

布尔条件等于某个变量(例如N)然后从初始变量(例如i)中减去然后除以嵌套的循环数(在这种情况下为1,因为它没有嵌套)。所以这个循环的迭代次数是:

(N - i) / 1

例如,为了找到嵌套循环的迭代,这将在循环中重复,直到你进入最里面的循环然后你为迭代计数多个所有循环。

我只是不了解具有不同增量条件的更复杂的循环,例如乘法或除法。具体来说,我如何计算出这个循环迭代的次数:

for (int i = 1; i < 1000; i *= 2)
    for (int j = 0; j < 1000; j++)

我知道这必须与总结有关,遗憾的是我没有看到连接。任何资源或建议将不胜感激。

2 个答案:

答案 0 :(得分:0)

计算每个循环的次数。这很容易,因为它们不是相互依赖的( j循环不依赖于i)。

  • i循环转为1, 2, 4, 8, 16, ..., 512。因为它必须小于1000,所以当它达到1024时它将停止。这总共是10次迭代。手动计算,或计算log2(1024)

  • j循环转为0, 1, 2, 3, ..., 999。这总共有1000次迭代。

所以你有一个1000循环的内循环,由外循环重复10次。这总共有10,000次迭代。

答案 1 :(得分:0)

我认为你读循环语法错了吗?

尝试大声朗读,如下:

这个循环:

for (int i = 1; i < 1000; i *= 2)

循环语法为:

  

从一开始,保持循环,而我不到一千 - 并且每次循环,将我乘以二。

所以,我从一开始,每次绕循环再乘两次 - 即1,2,4,8,16 ....这一直持续到一千(或超过它) - 并且循环停止。

并为此循环:

for (int j = 0; j < 1000; j++)

循环语法说:

  

从零开始,保持循环,而j小于一千 - 并且每次循环,将一个添加到j。

对于嵌套循环,没有区别,除了每次围绕外部循环,整个内部循环运行完成。

我发现大声朗读 - 或者在脑海中发出声音 - 可以帮助理解它们。