Предикат для вычисления чисел Фибоначчи, использующий метод накапливающего параметра - Prolog
Формулировка задачи:
Напишите предикат для вычисления чисел Фибоначчи, используя метод накапливающего параметра.
Предикат fib(N,K,F1,F2,R) содержит накапливающие параметры:
K – текущий номер числа Фибоначчи.
F1 и F2 – два подряд идущих числа Фибоначчи (в порядке возрастания номеров)
Для того, чтобы вычислить 10-ое число Фибоначчи, вызываем
?- fib(10,2,1,1,R).
Решение задачи: «Предикат для вычисления чисел Фибоначчи, использующий метод накапливающего параметра»
textual
Листинг программы
fib(N,R):- fib2(N, 1, 1, 0, R). fib2(N,N,_,F2,F2):-!. fib2(N,K,F1,F2,R):- K<N, F is F1+F2, fib2(N,K1,F2,F,R).
Объяснение кода листинга программы
fib(N,R)- это определение пользовательской функцииfib, которая принимает два аргументаNиR.fib2(N,K,F1,F2,R)- это рекурсивная функция, которая также принимает пять аргументовN,K,F1,F2иR.fib2(N,K1,F2,F,R)- это базовый случай для рекурсии, когдаKстановится равнымN, и функция прекращает свою работу.f is F1+F2- это вычисление значения переменнойF, которое является суммойF1иF2.fib2(N,K,F1,F2,R)- это рекурсивный случай для функции, когдаKменьшеN. В этом случае функция вызывает саму себя с новыми значениямиF1,F2иR.fib2(N,K1,F2,F,R)- это еще один базовый случай для рекурсии, когдаKстановится равнымN.- Значение переменной
Rне определено в коде, но предполагается, что оно используется для возврата результата из функцииfib. - В целом, этот код вычисляет числа Фибоначчи с использованием метода накапливающего параметра.