지역을 계산하는 다음과 같은 기능이 있습니다.영역 계산 접선 원주자 - 프롤로그
세 개의 매개 변수를받습니다. 첫 번째는 사례 수를 나타내는 n이고, 둘째는 원주의 라디오를 나타내고, 세 번째는 결과를 돌려줍니다.
첫 번째 입력이 1보다 큰 경우 작동하지 않는 문제가 있습니다.
이 내 코드 :
는as(1, [X], A) :-
A is (sqrt(3.0) * (X*X)) - (3.14 * (X*X))/2.
as(N, [H|_T], A) :-
A is (sqrt(3.0) * (H*H)) - (3.14 * (H*H))/2,
N1 is N-1,
as(N1-1, T, A).
가 작동하는 방법의 예는 다음과 같습니다
?- as(4, [1,1,1,1], R).
R = 0.162050807568877130000 ;
R = 0.162050807568877130000 ;
R = 0.162050807568877130000 ;
R = 0.162050807568877130000.
당신이 나를 도울 수 있다면, 나는 감사 드리겠습니다 ...
술어는 ** 소문자로 시작해야 **. –
아마도 재귀 호출은'(N1-1, T, A)'대신에'as (N1, T, A)'가되기를 원할 것입니다. 'as/3'에 대한 첫 번째 논의의 목적은 무엇입니까? 비어있을 때까지 목록을 처리 할 수있는 것 같습니다. 그 목록에있는 모든 첫 번째 절을 삭제할 수 있다고 생각합니다. 일단 목록이 비어지면 아무 것도 일치하지 않을 것이기 때문입니다. –
두 번째 인수 목록의 길이와 중복되는 정보가 아닌가? –