[英]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.