2014-02-05 5 views

답변

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 
  • 이 프롤로그의 몇 가지 기능을 가진 버전 :

    1. 이 재귀 버전입니다.

      find all numbers X between A and B 
      

    이 두 버전 은 매우 직접 프롤로그로 전송할 수 있습니다. 프롤로그는 명령에 관한 것이 아니기 때문에 '루프'가 없습니다 (이 작업을 수행하십시오! 해당 값을 증가 시키십시오!). 그러나 문제를 공식화하는 것입니다.

  • 1

    난 당신이 렌더링 무슨 뜻인지 모르겠지만, 프롤로그 루프가 없기 때문에 당신은 재귀를 통해 쉽게 수의 목록을 만들 수 있습니다 :

    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) 
        . 
    
    관련 문제