Prolog如何在循环中的列表中添加数字?
我有循环,我需要将数字添加到列表中并最终渲染它。
答案 0 :(得分:1)
Prolog是一种逻辑语言,而不是命令式语言。您可能需要以不同的方式表达问题。通过制定你想要的而不是你想要的东西。
这是一个递归版本:
the list of numbers between A and B is empty if A >= B or else
the list of numbers between A ans B is A and the list of numbers between A+1 and B
这是一个带有一些prolog功能的版本。
find all numbers X between A and B
这两个版本可以直接转移到prolog中。没有'循环'因为prolog不是关于命令(做这个!做那个!把那个值放在那里!增加!)但是关于制定问题。
答案 1 :(得分:1)
我不知道呈现是什么意思,但你可以通过递归轻松创建一个数字列表,因为prolog没有循环:
range_list(M,M,[M]).
range_list(M,N,[M|R]) :-
M < N ,
M1 is M+1 ,
range_list(M1,N,R)
.
range_list(M,N,[M|R]) :-
M > N ,
M1 is M-1 ,
range_list(M1,N,R)
.
您还可以使用内置谓词来获得所需内容:
range_list(From,To,Result) :-
findall(X,between(From,To,X),Result)
.