簡體   English   中英

Prolog:在列表中計算正數

[英]Prolog: Count positive elems in list

我想計算清單中的積極因素(VIsual Prolog)。 所以我寫了這個函數:

positiveCount([], C).
positiveCount([A], C) :- A > 0, C = C + 1.
positiveCount([H|T], C) :- H > 0,!,C = C+1,positiveCount(T,C); positiveCount(T,C).

錯誤:

The flow pattern '(o,i)' does not exist for '+' main.pro

我從這個錯誤中理解,我不能使用C=C+1作為輸入變量。

任何想法如何修復我的代碼?

以下代碼在上使用 ,所以不要指望它在按原樣運行:-(
不過,我希望它對你有用!

:- use_module(library(clpfd)).

count_pos([], 0).
count_pos([E|Es], C) :- E #=< 0,            count_pos(Es, C).
count_pos([E|Es], C) :- E #>  0, C #= C0+1, count_pos(Es, C0).

讓我們讀簡單的英語條款的“箭頭”的方向:-這是“左,右”。

  1. count_pos([], 0).

    空列表[]包含的正算術表達式的數量為零。

  2. count_pos([E|Es], C) :- E #=< 0, count_pos(Es, C).

    如果列表Es包含C正算術表達式
    如果某些算術表達式E不是正數
    然后得出結論, [E|Es]也包含C正算術表達式。

  3. count_pos([E|Es], C) :- E #> 0, C #= C0+1, count_pos(Es, C0).

    如果列表Es包含C0正算術表達式
    如果某個算術表達式E 正數
    然后得出結論, [E|Es]也包含C0+1正算術表達式。

示例查詢:

?- count_pos([1,2,3,0,-1,-2], C).
   C = 3
;  false.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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