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

      Комментарии к записи Ответ в теме: Числа Фибоначчи с коэффициентами отключены
#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 – функция возвращает накопленный в буфере результат. У функции используется два буфера – текущее и предыдущее значения чисел Фибоначчи (на их основе можно рассчитать следующее).
Если счетчик еще не достиг требуемого значения – рассчитывается число, при этом используются коэффициенты в соответствии с заданием.