如何使用递归获得列表项的乘积?
如果我问:
product([s(0), s(s(0)), s(s(0))], S).
结果应该是:
S = s(s(s(s(0)))).
但我得到错误的结果。或者没有结果。
我试过了:
product([], 0).
product([], Res).
product([H1, H2|T], Res) :- T\=[], mul(H1, H2, Res), product(T, Res).
product([H|T], Res) :- mul(H, Res, X), product(T, X).
mul 是乘法,它工作正常。
如果我使用跟踪,我可以看到它找到了结果,但由于某种原因它失败了。
Call: (10) product([], s(s(s(s(0))))) ? creep
Fail: (10) product([], s(s(s(s(0))))) ? creep
有人知道吗?