簡體   English   中英

while循環中的控制流

[英]Control flow in a while loop

在解決Project Euler的問題時,我遇到了以下與何時更新 n 相關的邏輯錯誤。

while(n<1000):
    #update n
    #do something with n
    #do stuff

對比

while(n<1000):
    #do something with n
    #do stuff
    #update n

在第一種情況下,即使違反了 n<1000 的條件,我最終還是使用 n 執行了操作。

這個邏輯錯誤有名字嗎? 這個錯誤有多普遍?

我試圖尋找它,我確實找到了關於預遞增和后遞增變量的東西。 雖然這接近錯誤,但這並不是這里發生的事情。 我在關於 for 循環與 while 循環的 SO 答案中找到了對此的參考,該部分描述了與 while 循環相比,for 循環如何更簡潔和直接。 本質上,使用 while 循環,我們最終會在變量更新后運行代碼,該變量可能隱藏在代碼中的某個位置。

這並不總是一個錯誤:它取決於算法。 在某些情況下,您知道n的原始值是合法的(因此您可以進入循環),但您希望在處理中更新並使用新值。 您需要將您的代碼與您的算法相匹配。 您的第二個代碼塊for -equivalent 的規范,並且更常見。

這屬於“因 1 個錯誤而關閉”的總標題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM