Prolog; tenta tornar os fibonacci mais eficazes?
Essa programação lógica está realmente dando um lap dance em minhas habilidades de programação imperativas. Isso é lição de casa, então, por favor, não me mande a resposta. Isto é o que eu tenho:
fibo(N,1) :-
N < 2,
!.
fibo(N,R) :-
N1 is N-1,
N2 is N-2,
fibo(N1,R1),
fibo(N2,R2),
R is R1+R2.
Eu devo criar outra função que se parece com isso;fib(N,Value,LastValue)
. N
é o enésimo número e value é o valor de retorno. Não entendo como posso reescrever isso usando acumulação. E como conta para trás, não vejo como ele pode "conhecer" um último valor antes de calcular qualquer coisa. : s Qualquer entrada é apreciada.