繁体   English   中英

Prolog列表返回false

Prolog lists returns false

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我在Prolog中比较新。 我正在尝试乘法并添加列表的所有元素,但它只适用于一个元素。 怎么了?

 %Basic
mult([],A,0).

mult([X|Xs],A,S) :-
   mult(Xs,A,R),
   S is (X * A),
   S is S + R.

谢谢你的帮助。

1 个回复

问题是线S is S + R. 在prolog中,一个变量不能在子句的主体内采用不同的值。 在这里你期望S的值改变,但这不起作用(除非R为0,在这种情况下S保持不变;因此它为什么它已经适用于单个元素列表)。

您需要使用不同的变量来存储中间结果,并且仅将输出变量用于最终结果。 例如:

mult([], _, 0).

mult([X|Xs], A, S):-
    mult(Xs, A, R),
    Tmp is (X * A),
    S is Tmp + R.

我也冒昧地修复了你得到的单例变量警告。 虽然在这种情况下它是无害的,但你永远不应该忽视它们,因为它们经常指出有缺陷的逻辑。

1 Prolog 程序返回 false

我在 Prolog 中实现了以下电源程序: 代码做了应该做的事情,但在正确答案之后,它会打印“false.”。 我不明白为什么。 我正在使用 swi-prolog。 ...

2 Prolog if子句返回false

我正在学习Prolog,但有一个小问题。 我正在研究一个“建造”塔的例子。 因此,我定义了3个块a,b和c。 第三个块c位于a和b的顶部->,因此由a和b支持。 我还有一个函数来计算块的级别。 我的问题如下: 为什么0级返回false,我该如何解决? 我想有一 ...

2015-03-26 17:41:28 2 717   prolog
3 Prolog目标查询返回False

我是一名正在学习Prolog的高中生,并且在进球时出现错误。 我有以下事实: 我想得到所有公主角色的宠物。 我在尝试: 没有成功的结果。 任何帮助表示赞赏。 ...

2018-03-20 05:31:04 2 95   prolog
4 Prolog查询可以满足但返回false

我在下面有一个我编写的prolog程序的简单示例,其中包含一个可满足的查询,该查询始终为搜索返回false。 当我问两个常量是兄弟时,这样可以正常工作,但如果我试图找到一个常数prolog的兄弟,则返回false。 我究竟做错了什么? ...

6 初学者 Prolog 问题 - 比较总是返回 false

我有一个非常简单的 Prolog 函数,但 Prolog 总是从比较中返回false ,我不知道为什么。 我想取N个字母并将它们放在一个列表中。 所以如果我用N=6调用它,我想要[A,B,C,D,E,F] 。 谁能告诉我我做错了什么? 当我使用 SWIPL 运行它时,我得到了这个: 但是如果 ...

2021-04-04 14:12:27 1 34   prolog
7 带有约束的 Prolog 查询返回 false,但有答案

我正在尝试编写一个 prolog 程序来确定我可以在大学课程目录中选择哪门课程。 每门课程都有一个唯一的代码,如cs180,每门课程可能有一些先修课程,这意味着必须在注册本课程之前完成必修课程。 假设课程没有循环依赖,大学里的所有课程都形成一个没有循环的有向图。 req(ma262, [ma261 ...

9 简单的序言程序过早返回false

自从我在Prolog中编程以来已经有一段时间了。 今天,我试图编写一个简单的程序。 它列出了谁属于同一家庭的一些事实。 如果两个人属于同一个家庭,则他们不能互赠礼物。 我想让所有允许某人赠送礼物的人(或至少一个人)。 某些查询,如果sameFamilyTrans/2返回false ...

2013-12-01 21:26:02 2 204   prolog
10 如果列表是预定义的,则序言列表搜索返回false

我正在尝试编写一个序言程序,以演示如何使用削减来提高效率。 我正在使用以下成员声明来搜索列表。 该函数似乎可以正常工作,例如: 我遇到的问题是我需要能够将成员与预先声明的列表一起使用。 像这样: 即使将某列表定义为在第一个测试中起作用的[3,1,4],当被调用时它也会 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM