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

Prolog如何在循环的列表中添加数字?,prolog,Prolog,Prolog如何在循环的列表中添加数字 我有循环,我需要将数字添加到一个列表中,并在最后呈现它。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 be

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


我有循环,我需要将数字添加到一个列表中,并在最后呈现它。

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
    
  • 这是一个具有一些序言功能的版本

    find all numbers X between A and B
    

  • 这两个版本可以直接转换到prolog中。没有“循环”,因为prolog不是关于命令(做这个!做那个!把那个值放在那里!增加!),而是关于制定问题。

    我不知道渲染是什么意思,但你可以通过递归轻松创建一个数字列表,因为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)
      .
    

    你能展示你解决这个问题的努力吗?注意,在Prolog中,您不会使用“循环”。您可以在递归谓词中执行列表处理。
    range_list(From,To,Result) :-
      findall(X,between(From,To,X),Result)
      .