prolog中给定数的阶乘
如何在prolog中按给定的数字进行阶乘prolog中给定数的阶乘,prolog,factorial,Prolog,Factorial,如何在prolog中按给定的数字进行阶乘 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):-
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.
您可以使用通常的Prolog方法来完成此操作—通过定义包含两个子句的递归规则:
- 当数字为
时,其阶乘为0
——这可以通过一个简单的事实来实现1
- 当数字大于零时,计算
,获得其阶乘,并将结果乘以number-1
number
is
运算符,即PriorNum是数字-1
或结果是数字*PriorFactorial
您的entered/1
谓词看起来像是一次尝试。但是,您应该将其改写为阶乘/2
,第一个参数表示输入,第二个参数表示谓词的输出
factorial(0, 1).
factorial(X, R) :- N > 0, X1 is X-1, factorial(X1, S), R is S*X.
两个子句中的任何一个都不应出现输出-这应该在run
谓词中完成
factorial(0, 1).
factorial(X, R) :- N > 0, X1 is X-1, factorial(X1, S), R is S*X.
您可以使用通常的Prolog方法来完成此操作-通过定义包含两个子句的递归规则:
- 当数字为
时,其阶乘为0
——这可以通过一个简单的事实来实现1
- 当数字大于零时,计算
,获得其阶乘,并将结果乘以number-1
number
is
运算符,即PriorNum是数字-1
或结果是数字*PriorFactorial
您的entered/1
谓词看起来像是一次尝试。但是,您应该将其改写为阶乘/2
,第一个参数表示输入,第二个参数表示谓词的输出
factorial(0, 1).
factorial(X, R) :- N > 0, X1 is X-1, factorial(X1, S), R is S*X.
两个子句中的任何一个都不应出现输出-这应该在run
谓词中完成
factorial(0, 1).
factorial(X, R) :- N > 0, X1 is X-1, factorial(X1, S), R is S*X.
See See really Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Thank Than。