问题标签 [non-termination]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1314 浏览

prolog - Prolog 谓词 - 无限循环

我需要使用自然数为 2 的幂创建一个 Prolog 谓词。自然数是:0、s(0)、s(s(0)) 等等。

例如:

这是我的代码:

它与第一个示例完美配合,但在第二个示例中进入无限循环。
我该如何解决这个问题?

0 投票
2 回答
3317 浏览

prolog - Prolog 后继符号产生不完整的结果和无限循环

我开始学习 Prolog 并首先了解了后继符号。

这就是我发现在 Prolog 中编写 Peano 公理的地方。

请参阅PDF的第 12 页:

我将乘法规则放入 Prolog。然后我进行查询:

这意味着基本上找到了 6 的因数。

这是结果。

这个结果有两个问题:

  1. 并未显示所有结果,请注意结果 X=6,Y=1 缺失。
  2. 它不会停止,除非我 Ctrl+C 然后选择中止。

所以......我的问题是:

  1. 这是为什么?我尝试切换“prod”和“sum”。结果代码给了我所有的结果。再说一次,为什么会这样?虽然它仍然是死循环。
  2. 如何解决?

我读了关于无限循环的另一个答案。但我很感激有人根据这种情况回答。它对我有很大帮助。

0 投票
2 回答
340 浏览

prolog - 转换一个句子会创建一个无限循环 - 但是如何?

我不知道这是哪里出了问题。请注意,我对 Prolog 很陌生,我确信我错过了一些东西——只是不知道那可能是什么。有人可以帮我吗?

谢谢,这是我的代码:

0 投票
2 回答
11529 浏览

list - Prolog:检查两个列表是否具有相同的元素

我是 Prolog 的新手,在检查两个列表是否具有完全相同的元素时遇到问题。元素可能有不同的顺序。我有这个代码:

它的工作原理是

返回第一个结果后导致内存不足错误。因此,我尝试通过检查列表的长度是否相等并检查 H1 是否是 L2 的成员来缩小结果集:

现在两者

返回所有结果,但最后它们只是挂起。有一个更好的方法吗?

0 投票
3 回答
4039 浏览

prolog - 试图通过递归计算步数?

立方体

这是一个立方体,它的边缘是有方向的;它只能从左到右,从后到前,从上到下。

使用下面的方法,我们可以检查是否可以从 AH 出发,例如:cango(A,H)。

使用 move2,我正在尝试执行所需步骤的计数。

我将如何实现这一点?

0 投票
2 回答
442 浏览

android - 发生一般异常时防止应用程序终止

有没有办法在一个地方捕获所有“未捕获”的异常并让应用程序继续运行?

我看到我可以使用 setUncaughtExceptionHandler 进行一些日志记录等,但应用程序仍将终止。我想要一些可以记录异常的东西,告诉用户他的操作失败了,然后让他继续(尝试别的)。

谢谢。

0 投票
0 回答
286 浏览

c# - DrawImage 永远不会返回

我和我的同事在 C# 的 Graphics 类中遇到了一个明显的错误。在我们的应用程序中,我们通过在其上绘制新事物来随着时间的推移更新位图。我们使用 Graphics.DrawImage(Image, Rectangle) 方法,有时调用永远不会返回,甚至会抛出异常。这是你们熟悉的问题吗?

这是我们的用例:

这在我们的问题出现之前就已经定义好了。正常的通话看起来像这样,“part”和“region”从网络进来:

我们尝试对其设置超时:

我们尝试检查“部分”图像。通话前,看起来还可以;它没有被处置或任何东西,我们能够获得它的属性。但是在调用之后,它的所有成员都会抛出 InvalidOperationException。

如果我们让程序在此之后继续运行,下一次调用将每次都挂起。如果我们稍后暂停调试器,我们可以在线程视图中看到这些“绘图”任务仍在等待。

因此,如果您知道任何解决方法或防止这种行为的方法,我们将不胜感激您的帮助。

不久后编辑:

我们查看了图形对象,发现我们无法检查它,因为这个“对象当前正在其他地方使用”。我们认为这是对“整体”图像的唯一参考。我们甚至克隆了图像以将其显示在图片框中。我们阅读了 Clone 并发现,如果我们理解正确的话,它只做一个浅拷贝并且仍然与旧图像共享资源。

所以我们尝试替换

它似乎解决了我们的问题。尽管在这种情况下 DrawImage 不会引发异常仍然是一个问题。

0 投票
3 回答
214 浏览

prolog - Prolog 终止域:我如何知道哪些问题会返回有限数量的答案?

假设我有一个序言程序来连接这样的列表:

我怎么知道哪些问题会返回有限数量的答案?例如,询问

将返回有限解集:

在提出问题的同时

将返回一组无限的解决方案:

依此类推(基本上,每个可能的列表都以 [1,2,3] 结尾。

那么我如何推断逻辑程序上哪些问题会结束呢?

0 投票
1 回答
2231 浏览

prolog - 2-序言中的水壶

我正在尝试解决 swi-prolog 中的 2 水罐问题:给定 2 个容量分别为 4 和 3 加仑的水罐,我想找到在容量为 4 的水罐中获得 2 加仑的水罐和另一个容量为 0 的水罐的步骤。

我使用 bfs 和 dfs 在 C++ 中为这个问题编写了程序:http: //kartikkukreja.wordpress.com/2013/10/11/water-jug-problem/。现在,我正在尝试解决 prolog 中的问题。我对该语言完全陌生,我的代码不会终止。

这是我到目前为止的代码:

任何帮助表示赞赏。

0 投票
1 回答
455 浏览

prolog - 为什么这会导致无限递归?

我在序言中有这个程序,我基本上定义了一个人的图表,我需要做一些谓词来告诉我哪些人是有联系的,哪些是派系。以下是事实:

这是我的谓词 clique 的定义。它将图 G 和人员列表作为参数,并尝试检查列表中的人是否确实是朋友圈。(这意味着谓词 goodfriends 对于列表中的每一对人都是正确的)

clique 所做的是:如果列表仅包含两个人,则只需检查这两个人是否是好朋友。如果这是真的,那么他们两个之间就有一个派系。如果人员列表中有两个以上的人,那么对于列表的每个头部,即人员检查他是否与列表尾部的其余人员是好朋友,并递归地对所有列表执行此操作人。下面定义了 clique 工作的其余辅助谓词。

问题

当我创建名为 runner 的谓词来测试谓词“clique”时:

我希望它返回图中的所有派系,但我的结果是:

递归有什么问题?我知道我得到了正确的结果,但出于某种原因,所有结果都显示它不断递归。

先感谢您。