簡體   English   中英

列表中的 Prolog-Sum 正數

[英]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 編譯器會打印警告,指出變量SomaSoma1是該子句中的單例變量

關於遵循 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM