我写了一个数组搜索:
for (int i=0; i<N; i++) {
if (array[i] == foo) {
write('Элемент найден');
} else {
write('Элемент не найден');
}
}
但是由于某种原因,最终,找到了元素并没有同时找到元素。怎么会这样?
该问题在任何编程语言、任何类似数组的数据结构和任何形式的循环(包括 jquery each
我写了一个数组搜索:
for (int i=0; i<N; i++) {
if (array[i] == foo) {
write('Элемент найден');
} else {
write('Элемент не найден');
}
}
但是由于某种原因,最终,找到了元素并没有同时找到元素。怎么会这样?
该问题在任何编程语言、任何类似数组的数据结构和任何形式的循环(包括 jquery each
问题是条件语句不是执行一次,而是执行多次,每次循环迭代一次。每次选择一个分支时,条件运算符就是这样工作的。
因此,在循环内部,您不能断定未找到数组元素。这个结论只有在循环结束后才能得出!
修复算法的最简单方法是,如果这段代码位于单独的子例程(函数)中 - 只需在“正”分支内添加函数的退出,然后循环结束后的任何代码都可以执行,只有未找到该元素:
在更复杂的情况下,您将需要一个额外的布尔变量(标志)来存储在其中找到元素的事实:
有时会发生“未找到”的标志可以隐藏在现有变量中而不是开始一个新变量:
最后,在 Python 中还有另一种方法可以做到这一点 - 循环的 else 分支:
这是有效的,因为如果循环已经结束并且没有被 break 语句中断,则执行循环的 else 分支。