2014-11-25 5 views
0

주어진 숫자로 프롤로그 계승을 만들려면 어떻게해야합니까?계승 (계승) 프롤로그에서 주어진 숫자로

run:-write('This is a Prolog program that find the factorial of a number'), 
start. 
start:- nl,nl,write('Please enter the number X = '),read(X), 
enterd(X). 
enterd(0):- 
write('The factorial of a 0 is '),write('1'),nl. 
enterd(X):- 
X1 is X-1, 
entered(X1,S), 
R is S*X, 

write('The factorial of the number is'),write(R),nl. 
+1

참조 [이 답변] (http://stackoverflow.com/a/2909528/772868) – false

답변

2

당신은 그것을 일반적인 프롤로그 방법을 - 두 개의 절을 커버하는 재귀 적 규칙을 정의하여 :

  • 0입니다

    , 그 요인은 1입니다 - 이것은 단순한 사실을 수행 할 수 있습니다 .
  • 숫자가 0보다 큰 경우 Number-1을 계산하고 계승을 구한 다음 결과에 Number을 곱합니다.

코딩하기가 너무 어렵지 않아야합니다. 산술 연산은 연산자를 사용합니다 (예 : PriorNum is Number - 1 또는 Result is Number * PriorFactorial).

entered/1 조건자는 시도와 같습니다. 그러나 첫 번째 매개 변수는 입력을 나타내며 두 ​​번째 매개 변수는 술어의 출력을 나타냄으로써 factorial/2으로 다시 작성해야합니다.

두 절 중 하나에서 출력이 발생하지 않아야합니다. 이는 run 술어에서 수행되어야합니다.

factorial(0, 1). 
factorial(X, R) :- N > 0, X1 is X-1, factorial(X1, S), R is S*X. 

Demo.

+0

은 정말 처음에 잘못된 방법으로 그것을 사용 .I 도와 감사하지만, 지금이야 조언을 위해 – Esraa

+0

s (X) : "두 절 중 하나에서 출력이 없어야합니다". – repeat