При решении вопроса Project Euler я столкнулся со следующей логической ошибкой, связанной с обновлением n.
while(n<1000):
#update n
#do something with n
#do stuff
vs
while(n<1000):
#do something with n
#do stuff
#update n
InВ первом случае я выполнил операцию с n, хотя условие n <1000 нарушено. </p>
Имеет ли эта логическая ошибка имя? Насколько распространен этот баг?
Я попытался найти его, я нашел кое-что о предварительном увеличении и последующем увеличении переменной. Хотя это близко к ошибке, это не совсем то, что здесь происходит. Я нашел ссылку на это в ответе SO о цикле vs против цикла loop в части, описывающей, как циклы for являются более краткими и прямыми по сравнению с циклами while. По существу, с циклами while мы в конечном итоге запускаем код после обновления переменной, которая может быть похоронена где-то в коде.