【发布时间】:2012-12-11 22:56:03
【问题描述】:
我完全是 Prolog 的菜鸟。我正在做一个任务,我创建一个零钱计数器,总共可以取S(以美分为单位),0
这是我的代码:
change(S,H,Q,D,N,P) :-
member(H,[0,1,2]), /* Half-dollars */
member(Q,[0,1,2,3,4]), /* quarters */
member(D,[0,1,2,3,4,5,6,7,8,9,10]) , /* dimes */
member(N,[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]),
/* ^^ nickels ^^ */
S is 50*H + 25*Q +10*D + 5*N,
S =< 100,
P is 100-S.
所以我的问题是,当我尝试计算 ?- change(87,0,3,D,1,P). 之类的东西时,我输入的金额是 87 美分,我需要 3 个季度和 1 个镍.....我收到一条错误消息,指出 uncaught exception: error(existence_error(procedure,change/6),top_level/0)
在最后 3 行代码中,我认为我正确处理了给定的金额。我需要对给定的金额制定额外的规则吗?
【问题讨论】:
标签: prolog declarative