gpt4 book ai didi

prolog - 斐波那契数列 - Prolog

转载 作者:行者123 更新时间:2023-12-01 11:41:48 24 4
gpt4 key购买 nike

在尝试学习 Prolog 时,我遇到了一个很好的练习,它是编写一个显示第 N 个斐波那契数的程序。经过一些工作后,我让它开始工作,然后决定看看我是否可以编写一个程序来根据输入显示一系列斐波那契数列。

例如输入:

?- fib_sequence(2,5,Output).

给出输出:

?- Output = [1,1,2,3]

但是,我很难找到一个好的起点。这是我目前所拥有的:

fib(0, 0).
fib(1, 1).
fib(N, F) :- X is N - 1, Y is N - 2, fib(X, A), fib(Y, B), F is A + B.

fib_sequence(A,B,R) :- fib(A,Y) , fib(B,Z).

我知道我必须为 R 分配一个值,但我不确定如何分配多个值。非常感谢任何帮助。

最佳答案

请注意,您的 fib_sequence 不能在单个谓词子句中完成:您至少需要两个来保持递归 - 一个在 A 更大时生成一个空列表比 B(即我们已经用完了从 A 到 B 的范围),另一个是 fib(A,X) 中的 X对于您正在构建的列表,将 A 递增 1,然后递归调用 fib_sequence 以生成序列的其余部分。

第一个谓词子句看起来像这样:

fib_sequence(A,B,[]) :- A > B.

第二个谓词从句有点难:

fib_sequence(A,B,[H|T]) :-
A =< B /* Make sure A is less than or equal to B */
, fib(A, H) /* Produce the head value from fib(A,...) */
, AA is A + 1 /* Produce A+1 */
, fib_sequence(AA, B, T). /* Produce the rest of the list */

关于prolog - 斐波那契数列 - Prolog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19579118/

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