嵌套循环是指在一个循环体内包含另一个或多个循环的结构。这种结构允许我们对多维数据进行处理或执行需要多重迭代的操作。
循环控制则是指在循环执行过程中,通过特定语句改变循环的正常执行流程,包括:
break
:立即终止当前循环continue
:跳过当前迭代,进入下一次循环return
:从函数中返回,终止所有循环(在函数内使用时)# 打印九九乘法表
for i in range(1, 10): # 外层循环控制行
for j in range(1, i+1): # 内层循环控制列
print(f"{j}×{i}={i*j}", end="\t")
print() # 换行
// 查找二维数组中的特定元素
const matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
const target = 5;
let found = false;
outerLoop:
for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[i].length; j++) {
if (matrix[i][j] === target) {
console.log(`Found at position [${i}][${j}]`);
found = true;
break outerLoop; // 使用标签跳出外层循环
}
}
}
// 跳过某些迭代的示例
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue; // 跳过偶数
}
System.out.println("奇数: " + i);
if (i > 5) {
break; // 当i大于5时终止循环
}
}
问题:嵌套循环可能导致时间复杂度急剧上升(O(n²)或更高)
解决方案:
# 优化示例:提前终止不必要的迭代
numbers = [2, 4, 6, 8, 10]
target = 12
found = False
for i in range(len(numbers)):
if found: # 如果已经找到,不再继续
break
for j in range(i+1, len(numbers)):
if numbers[i] + numbers[j] == target:
print(f"Pair found: {numbers[i]}, {numbers[j]}")
found = True
break
问题:循环条件设置不当导致无限循环
解决方案:
let counter = 0;
while (someCondition) {
// 业务逻辑
// 安全措施
counter++;
if (counter > 10000) {
console.log("安全终止循环");
break;
}
}
问题:内外层循环使用相同变量名导致逻辑错误
解决方案:
// 正确做法:使用不同的变量名
for (int row = 0; row < rows; row++) {
for (int col = 0; col < cols; col++) {
// 处理矩阵元素
}
}
通过合理使用嵌套循环和循环控制语句,可以高效处理复杂逻辑,但需要注意代码可读性和性能影响。