gpt4 book ai didi

prolog - 序言中的递归(在列表上)

转载 作者:行者123 更新时间:2023-12-04 23:30:31 24 4
gpt4 key购买 nike

有人可以帮助我执行递归序言函数的基础知识..

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.

有人可以用英语或 C/C++/Java 解释一下……步骤如何。我实际上更喜欢看到像 append 或 reverse 之类的东西..我主要是在操作变量列表而不是整数..(我已经尝试了 10 次这样的 append .. 呃)。

最佳答案

append(A, B, R)意味着 R是附加 A 的结果至 B .

基本情况

append([], X, X).

说如果 A = []B = X然后 R = X = B : 空列表 A附加到其他一些列表 B等于 B .

递归情况
append([X | Y], Z, [X | W]) :- append(Y, Z, W).

说如果 A = [X | Y]是要附加到 B = Z 的非空列表,如果 WY附加到 Z ,然后 R = [X | W] .

另一种说法是:附加一个非空列表 A到另一个列表 B , 先追加 A 的尾部至 B然后添加 A 的头部到列表的前面。

关于prolog - 序言中的递归(在列表上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5824802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com