Сообщение от
Яр
Есть выражение:
Fn-1 <= A <= Fn+2
Скорее Fn < A <= Fn+1
нули с начала убрать, числа фиббоначи начинаются с 1: 1, 1, 2, 3, 5
F: 1, 1, 2, 3, 5, 8, 13...
N: 1, 2, 3, 4, 5, 6, 7
Ну а код должен выглядеть где-то так
Код:
domains
n = integer
r = real
predicates
fibb(n,r)
fuk(n,r)
fuk(n,r,n)
clauses
fibb(1,1):-!.
fibb(2,1):-!.
fibb(N,Res) :-
N1=N-1, fibb(N1,F1),
N2=N-2, fibb(N2,F2),
Res=F1+F2 .
fuk(E,N):- fuk(E, N, 1).
fuk(E, N, Cur):-
fibb(Cur, Fib),
Fib >= E,
N=Cur-1.
fuk(E, N, Cur ):-
New=Cur+1,
fuk(E, N, New).
goal
fuk(6, N),
write(N).
Почему именно так..хз... я Пролог сдал был еще прошлой сессией, но моск помнит что писать надо в таком духе. Главное что работает
Социальные закладки