【问题标题】:How to write a program to detect infinite loop in another program如何编写程序来检测另一个程序中的无限循环
【发布时间】:2019-02-02 14:48:54
【问题描述】:

在编写程序的过程中,我经常遇到无限循环。

如何编写一个以另一个程序为输入的程序并确定是否存在无限循环?

【问题讨论】:

  • 您是在问是否有一个开箱即用的库可以解决停机问题?
  • 您想要创建的称为静态分析器,并且已经有很多(免费和付费)。但首先你应该learn how to debug your programs。然后,您可以结合调试和静态分析来帮助查找和解决代码中的问题。哦,别忘了启用详细的编译器警告,编译器很有可能自己发现一些问题。
  • 最后,虽然某些无限循环可能是一个停止问题,因此无法找到,但并非所有无限循环都是这样。使用分析甚至简单的代码审查可以很容易地找到一些无限循环。
  • @MadPhysicist 是的,我在问是否有一个开箱即用的库可以解决停机问题。

标签: loops for-loop while-loop infinite-loop do-while


【解决方案1】:

你不能。我并不是说“这真的很难”。我的意思是“这是计算机科学领域的一个众所周知的问题,自该领域诞生以来人们就一直试图解决它,如果你能解决它,你将立即闻名于世。”

艾伦·图灵证明了它无法解决,也没有人能够反驳它,这就是为什么我说“如果你能解决这个问题,你就会世界闻名。”

The Halting Problem

【讨论】:

  • 你的意思是问题很难,但可以解决。我们能否证明这个问题没有解决方案,并且在不久的将来也无法解决?
  • @Subhadip 不,我的意思正好相反。 Alan Turing 证明,不可能以适用于所有程序的通用形式求解。
  • @Subhadip 如果你阅读链接,你会看到上面写着“艾伦·图灵在 1936 年证明了一个通用算法来解决 all 可能的程序的停止问题-输入对不存在" [特别强调我的]。
猜你喜欢
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 2015-08-06
  • 2013-12-26
  • 2019-08-07
  • 2015-11-10
相关资源
最近更新 更多