如何使这个Prolog程序工作

Ste*_*rea -1 logic declarative prolog

我目前正在尝试创建一个程序,它接受两个输入一个基数和一个指数,所以基本上我要问这两个东西,例如,如果Prolog的用户输入基数2和指数3,我希望它返回8 .. ,这是我到目前为止所做的,并且不起作用:

base:- write('Input the base: '),read(X),expo(X).
exponent:- write('Input the exponent '),read(Y),expo(Y).


expo(X,Y):- A is Y*Y,B is A*X,write(B).
Run Code Online (Sandbox Code Playgroud)

请帮忙

Nic*_*nes 5

  • 你已经定义了expo/2(即一个expo带有两个参数的谓词),但是你正在调用expo/1.
  • 您将read/1调用分成不同谓词的方式意味着X并且Y处于不同的范围内; 你永远无法调用expo(X,Y),除非你把read(X)read(Y)相同的规则之内.
  • 你的取幂定义是错误的.X ^ Y不是Y*Y*X. 如果你需要自己实现它,你需要一个递归谓词来做到这一点.如果没有,请使用内置的取幂运算符X**Y.