假设我有一个数X,我想解方程组Y+Z=X,Z*Y=1。
现在,它的解为Y=1/Z和Z=(sqrt(X*X-4)+X)/2或(X-(sqrt(X*X-4)))/2。
所以我可以在Prolog中写成:
由于实例化错误导致的。
现在,它的解为Y=1/Z和Z=(sqrt(X*X-4)+X)/2或(X-(sqrt(X*X-4)))/2。
所以我可以在Prolog中写成:
solve(X,Y,Z):- Y is (sqrt(X*X-4)+X)/2, Z is 1/Y.
solve(X,Y,Z):- Y is (X-(sqrt(X*X-4)))/2,Z is 1/Y.
这个方法是有效的。
但是
它需要我在之前进行很多准备工作,基本上是先解决问题,然后只是要求Prolog对答案进行评估。
是否有一种方法可以在不事先解决X的情况下获得Z和Y?
我不能只写一些
solve(X,Y,Z):- X is Y+Z, Z is 1/Y.
由于实例化错误导致的。