Создать последовательность Фибоначчи в прологе с 1 параметром

Я новичок в прологе и пытаюсь создать правила последовательности Фибоначчи. Но он не может работать из-за ошибки в коде, называемом арифметическим. Fib не является функцией.

Исходный код для моего кода:

fib(N):-
    N<1, S is 0,
    N<2, S is 1,
    N1 is fib(N-1),
    N2 is fib(N-2),
    S is N1 + N2,
    write(S, " ").

Заранее спасибо за помощь.

1 ответ

Решение
fib(0,0).
fib(1,1).

fib(N,R):- N>1,
           N1 is N-1,
           N2 is N-2,
           fib(N1,R1),
           fib(N2,R2),
           R is R1+R2.

Таким образом, как фибоначчи могут быть определены с использованием пролога, я определил два базовых случая, когда элемент n0 равен 0, а элемент n1 равен 1

а затем я определил любой другой элемент, который не равен 0 или 1, чтобы быть Fn-1 + Fn-2

называть предикат просто

?- fib(6,X).

где вы ожидаете, что X будет иметь результат

результат этого случая будет

X = 8 
Другие вопросы по тегам