Prolog实现最大公约数(cmmdc)报错:newY = X mod Y执行失败求助
Prolog最大公约数程序错误排查与修复
问题出在newY = X mod Y这一行:
- Prolog中的
=是统一化匹配操作,它只会尝试让左右两边的项结构一致,不会执行算术运算并赋值。 - 要计算算术表达式(比如
X mod Y)并将结果绑定到变量,必须使用is运算符。
修正后的代码:
% cmmdc(X: intreg, Y: intreg, Ret: intreg) % (i, i, o), (i, i, i) cmmdc(X, 0, X):- !. cmmdc(X, Y, Ret):- newY is X mod Y, cmmdc(Y, newY, Ret).
测试示例:
- 查询
cmmdc(12, 8, R).,会返回R = 4 - 查询
cmmdc(15, 0, R).,会返回R = 15
内容的提问来源于stack exchange,提问作者Radu Andrei Vaida
相关产品推荐
相关产品推荐

