所以,我理解编程非常好,但是最近我遇到了for循环,特别是嵌套的循环......我根本无法理解。它根本不会进入我的脑海。任何人都可以给我一些关于如何更好地感知这些循环的提示(或者......根本)吗?
提前致谢
答案 0 :(得分:3)
程序描述了计算机要执行的一系列操作。在这些操作中,可能是计算机应重复多次的一些子序列。在程序源代码(在许多情况下是不可能的)中,不是在字面上重复这些子序列的适当次数,而是可以使用一种构造,告诉计算机在这样的子序列结束时它应该返回或“循环”回来到那个子序列的开头。这些类型的构造通常称为“循环”。
在某些情况下,操作的重复子序列本身包含操作的子序列,这些操作应该作为执行包含序列的一次迭代的一部分重复多次。这也可以通过循环结构来表示。
示例:清洁家中窗户的算法
它有两个循环:一个包含除第一个以外的每个步骤的外部循环,另一个包含步骤3.1到3.3的内部循环。
通常,在启动循环之前必须达到某种初始化或启动状态。在这个例子中,在我真正清理任何窗户之前,我必须拿到我的清洁用品,我想从第一个窗口开始。
在大多数有趣的情况下,您事先并不知道程序需要在给定循环中运行多少次。例如,在示例中,我可能能够将外循环的迭代次数预测为我家中的窗口数,但我无法确定任何给定窗口将需要多少次内循环迭代。循环结构通过为循环终止提供灵活的条件来处理这个问题。
另一方面,某事必须从迭代变为迭代,否则重复永远不会停止。在最简单的情况下,触发从循环中最终中断的更改是(抽象地)已经执行的循环迭代的数量。但是,我们常常想要更灵活地衡量是否需要更多的迭代,例如“窗户是否足够干净?”
C / Java风格的for
循环形式化了这三个元素:初始化(获取耗材),终止条件(是否有更多脏窗口?)和更新(转到下一个窗口)。在第一次迭代之前执行初始化步骤一次。在每次迭代之前测试终止条件(并且如果它评估为false
则循环终止),并且在每次迭代之后执行更新步骤,然后测试下一次迭代的终止条件。当循环正常终止时,计算机接下来在循环体之后立即执行语句。
继续这个愚蠢的例子:
for (
int window_number = 0;
window_number < TOTAL_NUMBER_OF_WINDOWS;
window_number = window_number + 1) {
Window currentWindow = windows[window_number];
do {
cleaner.spray(currentWindow);
cloth.wipe(currentWindow);
} while (currentWindow.isDirty());
}
在这种情况下,我使用不同的循环结构(do { ... } while
)表示内部循环,因为它更自然地适用于不需要初始化步骤的事实,我不需要在之前测试终止第一次迭代,更新步骤在循环体内执行。但是,由于在第一次迭代之前测试终止条件实际上并不是有害的,所以我也可以将内部循环写为for
循环。我只是留下我不需要空白的部分(但我总是需要两个分号分隔符):
for (
int window_number = 0;
window_number < TOTAL_NUMBER_OF_WINDOWS;
window_number = window_number + 1) {
Window currentWindow = windows[window_number];
for (
/* no initialization */ ;
currentWindow.isDirty();
/* no (additional) update */) {
cleaner.spray(currentWindow);
cloth.wipe(currentWindow);
}
}
这就是你需要了解的关于一般循环和特别是for
循环的大部分内容。
答案 1 :(得分:1)
当我们在另一个循环的主体内放置一个循环时,称为嵌套循环。外循环将控制内循环的完整重复次数,这意味着由于条件a&lt; 10,下面示例中的内循环将至少运行10次。
在下面的示例&#34;打印B&#34;将出现200次,即20 * 10.外环A将运行内环B 10次。并且由于内部循环B被配置为运行20次,因此打印B将出现的总次数为200次。
// Loop: A
for(int a=0;a< 10;a++) {
// Loop: B
for(int b=1;b<20;b++) {
System.out.println("Print B");
}
}
答案 2 :(得分:1)
有许多不同类型的for循环,但都表现相似。
for循环的基本思想是,只要迭代器在某个范围内,for循环块内的代码就会迭代。
即
for(int i = 0; i < 10; i++)
{
int x = i;
}
在这里的代码(C ++)中,迭代器是i,代码块是int x = i。这意味着代码块将从i = 0到i = 9执行,每次将x设置为i,然后将i的值增加1.
您可以在此处看到其他说明:C++ For Loops
如果您使用的是Java:Java For Loops
嵌套for循环以相同的方式工作,唯一的区别是对于外循环的每次迭代,你完全迭代内循环。
即
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 5; i++)
{
int x = j;
}
}
在这里你看到每次在第一个for循环中执行代码时,你将执行内部for循环中的代码完成,或者直到j等于5.然后你迭代外循环并再次运行它。
希望这有帮助。