问题标签 [successor-arithmetics]

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 投票
1 回答
32 浏览

prolog - prolog 一元数 - 评估表达式

我正在尝试了解 Prolog,但我遇到了以下情况。我以下列方式定义了自然数(一元):

这意味着 0 是 0,s(0) 是 1,s(s(0)) 是 2 等等......

然后我定义谓词添加:

它将两个一元数和结果存储添加到 Z。

现在我有以下谓词“测试”证明了我的问题:

然后在解释中输入:

然后我尝试:

所以第一个参数应该导致 R = s(0),第二个参数是零,所以整个表达式应该被评估为 true,但 prolog 说 false。我想这与这一点有关,即“测试”谓词中的 add(s(0),0,R) 不会评估我的想法。谁能向我解释一下,或者最终提供一些描述这种行为的链接?谢谢你的帮助!干杯。

0 投票
1 回答
45 浏览

prolog - prolog 谓词以连续表示法添加 2 个数字并在 Z 中也以连续表示法获得结果

为什么总是导致错误为什么编译器告诉我算术:'s(_2676)' 不是函数

0 投票
2 回答
81 浏览

recursion - Prolog 上的递归

我正在尝试编写一个 Prolog 递归,它将返回以下数字表示:

1 --> s(0)

2 --> s(s(0))

3 --> s(s(s(0))) ...

我使用了以下代码:

但是当我尝试运行预测时:

我得到结果 A=0,如果我继续,我会收到超过卡住限制的错误。我期待得到一个结果 A = s(s(0))。我还尝试添加额外的停止条件:retnum(0,0)。

知道我的错误在哪里以及是否有更好的方法吗?

0 投票
1 回答
109 浏览

recursion - 如何解决这个递归加法?

我是逻辑编程和 Prolog 的新手。下面的 Prolog 程序定义了一个谓词add/3,用于将第一个参数与第二个参数相乘,从而得到第三个参数,基于方程x + y = z等价于 ( x - 1) + y = ( z - 1) :

但是这个查询,应该解决方程 1 + 0 = z,不返回预期的结果 ( 1):

如何解决这个递归加法?

0 投票
1 回答
116 浏览

prolog - 是否应该在定义加法的规则中交换第一个和第二个参数?

Prolog 中有两种可能的添加规则,根据 cTI 具有不同的终止属性:

  1. cTI 报告 sum(A,B,C)terminates_if b(A);b(C).以下规则:
  1. cTI 报告 sum(A,B,C)terminates_if b(A),b(B);b(C).以下规则(XY已交换):

sum(X, 0, Z).例如,可以通过使用SWISH(Prolog 的在线 SWI-Prolog 实现)执行查询来观察差异。

它为第一条规则返回以下解决方案:

它为第二条规则返回以下解决方案:

这两条规则哪一条是正确的?

0 投票
2 回答
209 浏览

prolog - 如何在所有参数模式的后继算术中实现阶乘序列?

以下 Prolog 程序定义了一个谓词fact/2,用于在后继算术中计算整数的阶乘:

它适用于此参数模式下的查询:

它也适用于这种参数模式下的查询:

它也适用于这种参数模式下的查询:

但它会在这种参数模式下通过查询耗尽资源:

如何在所有参数模式的后继算术中实现阶乘序列?

0 投票
3 回答
278 浏览

prolog - 如何在所有参数模式的后继算术中实现斐波那契数列?

以下 Prolog 程序定义了一个谓词fib/2,用于在后继算术中计算整数的斐波那契数:

它适用于此参数模式下的查询:

它也适用于这种参数模式下的查询:

它也适用于这种参数模式下的查询:

但它会在这种参数模式下通过查询耗尽资源:

如何在所有参数模式的后继算术中实现斐波那契数列?

0 投票
2 回答
52 浏览

python-3.x - 你能帮我用 Python 做这个系列吗?

我需要打印这个系列的结果:2、4、7、28、33、198...

当 x 为 1 时,结果应为 2

当 x 为 2 时,结果应为 4

当 x 为 3 时,结果应为 7

等等

我有这个,但它不工作:

0 投票
0 回答
20 浏览

prolog - Prolog - 使用谓词的阶乘

我必须编写一个谓词,它计算给定数字的阶乘。目标是仅使用谓词,而不是内置的序言算术。

阶乘(N,X) - 其中 X = !N

例如必须如何在不同的谓词(两个数字的总和)上完成:

我尝试了多次,但我找不到解决方案。谢谢您的回答。