有人可以帮助我只是执行递归prolog函数的基础知识..
append([],X,X). % base
append([X|Y],Z,[X|W]) :- append(Y,Z,W). %recursive
% base case
addup([], 0). % sum of the empty list of numbers is zero
% recursive case: if the base-case rule does not match, this one must:
addup([FirstNumber | RestOfList], Total) :-
addup(RestOfList, TotalOfRest), % add up the numbers in RestOfList
Total is FirstNumber + TotalOfRest.
Run Code Online (Sandbox Code Playgroud)
有人可以用英语或C/C++/Java解释一下这些步骤.我实际上更愿意看到像追加或反转的东西..我主要只是操纵变量列表而不是整数..(我试图通过追加10次...呃).
append(A, B, R)
意味着R
是附加的结果A
来B
.
基本情况
append([], X, X).
Run Code Online (Sandbox Code Playgroud)
说if if A = []
和B = X
then R = X = B
:A
附加到其他列表的空列表B
等于B
.
递归的情况
append([X | Y], Z, [X | W]) :- append(Y, Z, W).
Run Code Online (Sandbox Code Playgroud)
说,如果A = [X | Y]
是一个非空列表追加到B = Z
,如果W
被Y
追加到Z
,然后R = [X | W]
.
一个非空列表追加:说这是另一种方式A
给另一个列表B
,首先附加的尾巴A
来B
,然后添加头A
到列表的前面.
免费的在线书籍“立即学习 Prolog”有一个部分专门解释附加执行的步骤:
http://cs.union.edu/~striegnk/learn-prolog-now/html/node47.html#subsec.l6.defining.append