2012-07-14 2 views
1

을 GREATER_THAN :프롤로그 내가 프롤로그에 새로 온 사람과 나는이 운동을 해결하기 위해 노력하고있어/2 SUCC

술어 우리는이 강의에서 소개 된 표기법이 개 숫자를 취 greater_than/2 정의 (즉 0를 , succ(0), succ(succ(0)) ...)를 인수로 사용하여 첫 번째 인수가 두 번째 인수보다 큰지 여부를 결정합니다. 예컨대 :

?- greater_than(succ(succ(succ(0))), succ(0)). 
yes. 
?- greater_than(succ(succ(0)), succ(succ(succ(0)))). 
no. 

이 지금까지 내 대답입니다 :

greater_than(X, 0). 
greater_than(succ(succ(X)), succ(Y)). 

하지만 물론

이 제대로 작동하지 않는, 그래서 내가 도움을 사람을 부탁 해요. 감사합니다. .

답변

4

재귀 솔루션을 찾고있는 경우 기본 사례와 재귀 단계를 제공해야합니다. 제공하신 기본 케이스가 거의 옳습니다. 그러나 두 숫자가 0 일 때 예를 들어 성공하기 때문에 실패합니다. 왼쪽면의 모양이 succ(_)이고 오른쪽이 0 인 경우에만 성공해야합니다.

재귀 단계는 각면에서 요소를 가져 와서 재귀를 적용해야합니다. 그러므로 다음과 같이 작동해야합니다.

greater_than(succ(_), 0). 
greater_than(succ(X), succ(Y)):- 
    greater_than(X, Y). 
+0

답장을 보내 주셔서 감사합니다. Learn Prolog Now를 제외하고 프롤로그에 대한 흥미로운 책을 알고 있습니까? – user663468

+0

@ user663468 : 좋은 책을 보려면 [this] (http://stackoverflow.com/questions/401635/good-beginners-material-on-prolog) 질문을 확인하십시오. – gusbro