从另一个谓词调用谓词

时间:2019-11-20 16:47:32

标签: list function prolog

   list([1,2,3,4]).

len([],0).
len([_|T],X):-
    len(T,X1),
    X is X1+1.

sum([],0).
sum([H|T],X):-
    sum(T,X1),
    X is X1+H.

max_element([X],X).
max_element([H1,H2|T],Max):-
    H1>H2,!,
    max_element([H1|T],Max).
max_element([H1,H2|T],Max):-
    max_element([H2,T],Max).

min_element([X],X).
min_element([H1,H2|T],Min):-
    H1<H2,!,
    min_element([H1|T],Min).
min_element([H1,H2|T],Min):-
    min_element([H2,T],Min).

您好,我是Prolog的新手,应该创建一个谓词start/1,该谓词将加载一个整数列表并调用上面列出的谓词,并且还应返回以换行符分隔的值。非常抱歉,如果这没有道理,但我不知道如何实现,将非常感谢初学者的帮助,非常感谢。

1 个答案:

答案 0 :(得分:0)

我已经重新编辑了您编写的某些功能。这样我就可以轻松按所需方式打印它们。

sum([X],X):- write(X).
sum([H,H1|T],Z):- H2 is H+H1 , sum([H2|T],Z).

min([],Z):- write(Z).
min([H|T],Z):- H<Z , Z1 is H , min(T, Z1).
min([H|T],Z):- H>Z ,min(T ,Z).

max([],Z):- write(Z).
max([H|T],Z):- H>Z , Z1 is H , max(T, Z1).
max([H|T],Z):- H<Z ,max(T ,Z).

len([],S):- write(S).
len([_|T],Z):-  Z1 is Z+1 , len(T,Z1) .


list(Z):- write('sum :- ') , sum(Z,_), nl ,write('min:- ') ,  min(Z,99) , nl, write('max:- '), max(Z,0) ,nl, write('len:- ') , len(Z,0).

下面必须传递的查询才能以所需的方式获得输出。希望这对您有所帮助。

?- list([1,2,3]).
sum :- 6
min:- 1
max:- 3
len:- 3
true
相关问题