Ответ в теме: Числа Фибоначчи с коэффициентами

      Комментарии к записи Ответ в теме: Числа Фибоначчи с коэффициентами отключены
#1822

Чем Вам мешают знаки чисел? — Неужели умножение выполнится неправильно?
Я изменил код вот так:

fib2(A, B, N, R):-
fib2(A, B, N, 1, 1, 0, R), !.
fib2(_A, _B, N, N, Cur, _, Cur).
fib2(A, B, N, K, Cur, Prev, R):-
K1 is K + 1, Cur1 is A * Cur + B * Prev,
fib2(A, B, N, K1, Cur1, Cur, R). 

Первая функция вспомогательная, нужна лишь для вызова функции с дополнительными аргументами — начальными значениями чисел Фибоначчи. В эту же функцию целесообразно поместить обработку некорректных данных (например отрицательное значение N).

Вторая функция четвертым аргументом она принимает счетчик, который контролирует чтобы функция выполнилась ровно N раз. Если значение счетчика совпадает с N — функция возвращает накопленный в буфере результат. У функции используется два буфера — текущее и предыдущее значения чисел Фибоначчи (на их основе можно рассчитать следующее).
Если счетчик еще не достиг требуемого значения — рассчитывается число, при этом используются коэффициенты в соответствии с заданием.