2

抱歉,如果我重新问了一个先前的问题,但我找不到这个问题的具体答案。除了基本的循环迭代之外,我如何为嵌套循环迭代制定公式,例如:

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++)

我知道这与求和有关,不幸的是我没有看到这种联系。任何资源或建议将不胜感激。

4

2 回答 2

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 次迭代。

于 2013-05-14T23:55:22.557 回答
0

我认为您在阅读循环语法错误?

尝试大声朗读它们,如下所示:

对于这个循环:

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

循环语法如下:

从一开始,在 i 小于一千时继续循环 - 每次循环时,将 i 乘以 2。

所以,我从一开始,每次在循环中乘以 2 - 即 1、2、4、8、16 ......这一直持续到它达到一千(或超过它) - 和循环停止。

对于这个循环:

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

循环语法说:

从零开始,在 j 小于一千时继续循环 - 每次循环时,将 j 加一。

对于嵌套循环,没有区别,只是每次围绕外循环,整个内循环都会运行到完成。

我发现大声朗读——或在你的脑海中读出它们——真的有助于理解它们。

于 2013-05-14T23:57:08.083 回答