如何在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
。
答案 0 :(得分:1)
您收到此错误是因为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.