Prolog如何在循环中的列表中添加数字?

时间:2014-02-05 19:23:40

标签: prolog

Prolog如何在循环中的列表中添加数字?

我有循环,我需要将数字添加到列表中并最终渲染它。

2 个答案:

答案 0 :(得分:1)

Prolog是一种逻辑语言,而不是命令式语言。您可能需要以不同的方式表达问题。通过制定你想要的而不是你想要的东西。

  1. 这是一个递归版本:

    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
    
  2. 这是一个带有一些prolog功能的版本。

    find all numbers X between A and B
    
  3. 这两个版本可以直接转移到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)
  .