當我在大學時,我們有來自David Parnas的客座講座。在這篇文章中,他提到了一個用於保證循環(while循環,for循環等)在某個時刻安全退出的機制。他嘲笑沒有人知道這是什麼......可悲的是,多年後我也不知道。有誰知道這個機制被稱爲什麼?確保循環結束的機制
回答
根據他的專業領域(包括正確性的正式證明)來判斷,我認爲他的意思是loop variant,這是一種用於證明環路終止的通用技術。
這個問題似乎不合邏輯。
沒有一個gaurantee可以確保循環退出,而不是創建一個你知道會被命中的後置條件,即增加一個計數器,不要觸摸循環內部的計數器並使其達到最大值。
您也可以創建一個計時器或其他結構來檢查循環是否花費太長時間。
帕納斯在這裏暗示的是什麼?任何循環的普遍退出不會干擾邏輯或簡單地設計適當的後置條件?
「創建一個您知道會被擊中的發佈條件」,是「確保循環退出的一名參賽者」。這在所有情況下都非常容易設計。事實上,你必須**設計終止條件。 – 2009-07-23 23:43:10
有很多方法,以保證循環退出安全:
- 不要寫是無限
- ,其他的被留下作爲一個鍛鍊; Tibial
嚴重的是,最好的方法是保持簡單,並有一個穩定和完全測試的終止條件(即檢查是否應該運行另一次迭代或退出的代碼)。
你所描述的很可能會被翻譯成halting problem,這是一個衆所周知的問題,沒有解決方案。
此外,谷歌搜索顯示David Parnas在利默里克大學工作,你可以打電話給他並要求與他交談。我敢肯定,他會很高興你還在試圖:)
+1:這是一個確保終止的設計原則。 – 2009-07-24 01:39:31
你的客座講師可能已經提到Cycle Detection,檢測無限循環的方法來從他教你回去再學。
This blog post描述了檢測鏈表中的無限循環。有趣的是,它使用與維基百科文章相同的術語。
- 1. 爲機器人結束無限循環
- 2. Python的while循環結束控制檯
- 3. Java循環還沒有結束正確
- 4. 如何正確結束while循環?
- 5. 結束while循環
- 6. 不會結束的循環
- 7. javascript for循環不會循環結束
- 8. C#while循環不結束
- 9. 結束定時循環
- 10. 休息;不結束循環
- 11. 永不結束while()循環
- 12. EXCEPTION在循環結束
- 13. 按'q'結束for循環
- 14. 雖然循環不結束
- 15. 結束無限while循環
- 16. For循環過早結束
- 17. 如何結束循環
- 18. Haskell結束循環返回
- 19. Python - 循環未結束
- 20. PHP Foreach循環結束
- 21. 循環結束,但不是
- 22. EOF和GETCHAR結束循環
- 23. MOOC循環結束記憶
- 24. For循環不會結束
- 25. jQuery - 結束setInterval循環
- 26. 退出循環結束
- 27. 如何在循環結束時保留for循環變量的值?
- 28. 循環內循環 - 在autohotkey中檢測循環結束
- 29. 何時從0循環到結束以及何時從結束循環到0?
- 30. 的Excel宏循環提前結束,並需要保持開放的複製幾個循環(不同的文件)
我相信就是這樣。謝謝 – 2009-07-24 16:40:26