很抱歉,如果我再问一个上一个问题,但我找不到这个问题的具体答案。除了基本的迭代之外,我怎样才能为嵌套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++)
我知道这必须与总结有关,遗憾的是我没有看到连接。任何资源或建议将不胜感激。
答案 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。
对于嵌套循环,没有区别,除了每次围绕外部循环,整个内部循环运行完成。
我发现大声朗读 - 或者在脑海中发出声音 - 可以帮助理解它们。