在 Prolog 中计算球体积

Calculate sphere volume in Prolog

如何在 Prolog 中计算球体积?

我有这样的代码:

area(R,P):-P is 3.14 * R *R.
vol(R,P,V):-V is 4/3 * R * area(R,P).

我在尝试编译上面的代码时遇到这样的错误:

fatal error: unknown operation in arithmetic expression (area/2)
compilation failed

这段代码有什么问题,这是否意味着我不能在另一个谓词中使用一个谓词?我正在使用 gprolog.

您收到此错误是因为 gnu-prolog 不允许添加新的算术函数(除非您重新编译它的 'kernel')。

无论如何,您可以通过先计算面积然后使用该面积计算体积来计算体积。即:

area(R,P):-P is 4.0 * 3.14 * R *R.

vol(R,V):-
  area(R,P),
  V is 1/3 * R * P.