【发布时间】:2013-02-11 05:34:30
【问题描述】:
我在理解 Prolog 中的列表递归和修改时遇到了一些麻烦。我正在尝试获取列表列表,然后在每个列表中,将列表中的每个元素乘以最后一个元素。
这是我的代码的 sn-p:
/*Find the last element of a list*/
lastelement(X,[X]).
lastelement(X,[_|L]) :- lastelement(X,L).
/*Multiply two lists together*/
multiplication(M1,M2,M1*M2).
/*Take a list, find the last element and multiply every part of that list by that element*/
/*Attach modified list to X*/
modifyL([],X) :- X is [].
modifyL([First|Tset],X) :- lastelement(Y,First),
multiplication(Y,First,MFirst),
modifyL([Tset],X),
append(X,MFirst,X).
但是,当我尝试任何列表时,我得到的都是错误的。有人可以给我任何指示吗 关于可以帮助进一步理解这个问题的列表递归?
【问题讨论】:
-
您使用的是哪种实现方式?
-
我目前使用的是 SWI Prolog 5.10 版