【发布时间】:2012-01-06 11:13:53
【问题描述】:
举个例子来说明一下,假设我有一个程序接受来自用户的两个输入,a 和 b。程序增加 a 并减少 b。程序返回 a 和 b 相等的值。因此,a 必须更小,b 必须更大。但是如果用户输入相反的内容呢? a 越大 b 越小?程序显然会进入无限循环。但是假设我希望程序返回“这两个数字永远不会相遇”。那我该如何检查呢?请不要回答检查数字并分别回复。这只是一个例子。我想知道如何检查一个永远无法满足的条件。
另一个例子,比如比较两个数字。假设我有两个数字,并且我一直将它们随机化。当它们相等时,程序应该返回 true,否则返回 false。当数字不相等时,它不应进入无限循环。我只能在每次迭代中不断比较数字,并在它们相等时立即返回 true。但是它们很可能永远不会相等并且程序永远不会终止。如何检查这种情况并返回数字永远不相等的东西。
【问题讨论】:
-
不清楚你在这里问什么。您是否正在寻找一种通用方法来检查会导致您的问题无法终止的输入?那就是halting problem,没有通用的解决方案。
-
我想你已经回答了你的问题。 a 必须更小,b 必须更大。 因此,如果
a大于b,则条件永远不会为真,因此它将无限运行。 -
@RanhiruCooray 请再看一遍这个问题,我不想回答我给出的例子
-
aahh ... @OliCharlesworth 感谢您指出这一点。 :(
标签: logic