如何通过给定的数字在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):-
X1 is X-1,
entered(X1,S),
R is S*X,
write('The factorial of the number is'),write(R),nl.
答案 0 :(得分:3)
您可以使用通常的Prolog方式 - 通过定义涵盖两个子句的递归规则:
0
时,其阶乘为1
- 这可以通过一个简单的事实来完成。Number-1
,获取其阶乘,然后将结果乘以Number
。这不应该太难编码。您需要知道的是,算术运算使用is
运算符,即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.