【发布时间】:2013-04-15 23:07:15
【问题描述】:
我正在尝试自己实现斐波那契数列。这就是我所拥有的:
fibo2(N, F) :-
fibo2(0, 1, 0, N, F).
fibo2(N-F, F, N-1, N, F).
fibo2(P, S, C, N, F) :-
C < N,
T is S,
S1 is P + S,
C1 is C + 1,
fibo2(T, S1, C1, N, F).
我知道还有其他实现,但我不知道为什么这不起作用。当我使用fibo2(3, 2) 进行跟踪时,我认为这个调用应该是真的:
fibo2(1, 2, 2, 3, 2) ? creep
但它返回 false... 一些帮助将不胜感激
【问题讨论】:
-
您应该在代码中包含简短的 cmets,解释每个变量应该是什么,以及每个谓词的目的是什么。至少
"fibo2(N, F):- % F is N-th Fibonacci number, indexed base 1"应该在那里。