[英]Prolog-Sum positive numbers from a List
我有以下 Prolog 事实来总结列表中的正数,但它不起作用。 我究竟做错了什么?
somarPositivos([],0).
somarPositivos([H|T],Soma):-H>0,somarPositivos(T,Soma1),Soma is Soma1+H.
somarPositivos([H|T],Soma):-H=<0 ,somarPositivos(T,Soma1).
你在第三个子句中有一个错字。 它应该是:
somarPositivos([H|T],Soma):-H=<0 ,somarPositivos(T,Soma).
大多数 Prolog 编译器会打印警告,指出变量Soma
和Soma1
是该子句中的单例变量。
关于遵循 Prolog 编码指南的编程风格的一些注意事项。 缩进你的代码。 在运算符周围使用空格。 使用下划线而不是驼峰命名法作为谓词名称以提高可读性。 因此,最好写:
somar_positivos([],0).
somar_positivos([H|T],Soma) :-
H > 0,
somar_positivos(T,Soma1),
Soma is Soma1+H.
somar_positivos([H|T],Soma) :-
H =< 0,
somar_positivos(T,Soma).
作为对谓词的初始版本的改进,您能否重写它以使用累加器使其尾递归?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.