问题标签 [failure-slice]

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 投票
9 回答
15146 浏览

list - Prolog程序以任何顺序查找两个列表的相等性

我想编写一个 Prolog 程序来查找两个列表的相等性,其中元素的顺序
无关紧要。所以我写了以下内容:

但是,当我提供类似的输入时equal([1,2,3],X).,它并没有显示所有可能的值X。相反,程序挂在中间。可能是什么原因?

0 投票
2 回答
201 浏览

prolog - 为什么此命令会导致 prolog 中的堆栈溢出?

我有以下序言代码片段:

有人可以解释为什么以下命令会导致堆栈溢出吗?提前致谢。

0 投票
2 回答
959 浏览

prolog - prolog - 无限规则

我有下一个规则

查询是:ackermann (M,N,s(s(0)))

现在,据我了解,在第三次计算中,我们得到了无限搜索(失败分支)。我检查了一下,我得到了一个有限搜索(失败分支)。

我将解释:首先,我们得到了 M=0, N=s(0) 的替换(规则 1 - 成功!)。在第二个中,我们得到了 M=s(0),N=0 的替换(规则 2 - 成功!)。但是现在呢?我尝试匹配 M=s(s(0)) N=0,但它有一个有限搜索 - 失败分支。为什么编译器不写我“失败”。

谢谢你。

0 投票
2 回答
8503 浏览

prolog - Prolog中的全局堆栈错误

我正在尝试在 Prolog 中运行以下程序。

程序应计算从 li 和 hi 之间的每个数字到 lo 和 ho 之间的结果的适当的加法和乘法路径。加法对应字母 A,乘法对应 M。在程序结束时,我们应该得到对应于我们找到的路径的 As 和 Ms 字符串。

该程序运行良好,但在尝试测试用例时:

我收到“错误:超出全局堆栈”消息。

任何想法代码有什么问题?

0 投票
4 回答
263 浏览

prolog - Prolog:全局堆栈出错,对我来说似乎是一级递归

我对序言很生疏,但我不确定为什么这样的事情会失败:

所以,如果我评估 frack(4)。从定义了上述事实的交互式提示中,我希望它不必无休止地递归,因为 4-1 = 3。但是我在 SWI-Prolog 中收到此错误:

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 回答
978 浏览

prolog - 为什么 Prolog 在这个简单的例子中会崩溃?

您好,上面是一个非常简单的 prolog 文件,其中包含一些事实和一条规则:John 喜欢任何喜欢他的人。但是在加载此文件并询问 Prolog 以下查询后:

程序崩溃。likes(john,john)原因是即使规则规定了prolog 也会卡住X\=john

有什么建议吗?

0 投票
2 回答
2421 浏览

prolog - 序言:毕达哥拉斯三元组

我有这段代码,它使用一个上限变量 N,它应该终止于勾股三元组的 X 和 Y。然而,它只有在达到上限时才会冻结。不知道如何使用剪切来停止回溯。代码是:

将被称为,例如,

0 投票
2 回答
340 浏览

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

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

谢谢,这是我的代码: