코드 다음 0 내가 인터프리터에 ;
을 넣을 때마다 이상의 모든 정수를 더 제공하는 프롤로그 코드, 그것은 다음 수 있습니다 : 그것은 0과 사이의 숫자를 제공하는 방법이 있나요Prolog에서 1에서 100까지의 숫자를 인쇄하는 방법?
is_integer(0).
is_integer(X) :- is_integer(Y),X is Y+1.
을 100 만. 100에 도달하면 멈춰야합니다.
코드 다음 0 내가 인터프리터에 ;
을 넣을 때마다 이상의 모든 정수를 더 제공하는 프롤로그 코드, 그것은 다음 수 있습니다 : 그것은 0과 사이의 숫자를 제공하는 방법이 있나요Prolog에서 1에서 100까지의 숫자를 인쇄하는 방법?
is_integer(0).
is_integer(X) :- is_integer(Y),X is Y+1.
을 100 만. 100에 도달하면 멈춰야합니다.
얼마나 좋은 퀴즈. Prolog가 정의한 최소한의 도구를 사용하여 재귀를 제어하는 것이 얼마나 어려운지를 잘 보여줍니다. 우리는 otherless 바운드 됨 제한, 기준값보다 낮은 값으로 우리의 해결책을 저지한다 : 여기
is_integer(0).
is_integer(X) :-
is_integer(Y),
(Y >= 100, ! ; X is Y + 1).
의 범위를 제한하는 트레이스 출력을 3 (즉
... Y >= 3, ! ; ...
)
?- is_integer(X).
X = 0 ;
X = 1 ;
X = 2 ;
X = 3 ;
true.
행
B, Ciao, SICStus (라이브러리), SWI, YAP, XSB (라이브러리)에 이러한 목적으로 기본 제공 술어 between/3
이 있습니다.
?- between(0,100,X).
X = 0 ;
X = 1 ;
...
X = 100.
당신이 프롤로그를 배우기 시작하면
, 더 잘 이해하고 추론하는 것이 훨씬 쉽다 첫s(X)
번호를 사용하려고합니다. 같은 예는, 만 3까지가는 :
?- nat_nat_sum(N,_,s(s(s(0)))).
를 정의와 함께 :
nat_nat_sum(0,I,I).
nat_nat_sum(s(I),J,s(K)) :-
nat_nat_sum(I,J,K).