Вычисление чисел Фибоначчи - Lisp
Формулировка задачи:
2. Последовательность чисел Фибоначчи 1, 1, 2, 3, 5, 8, 13… строится по следующему закону: первые два числа - единицы; любое следующее число есть сумма двух предыдущих f(n)=f(n-1)+f(n-2). Напишите функцию (f n f1 f2) c накапливающимися параметрами f1 и f2, которая вычисляет n-ое число Фибоначчи.
Решение задачи: «Вычисление чисел Фибоначчи»
textual
Листинг программы
(defun fib (n &optional (c 1) (p 1)) (cond ((<= n 2) c) (t (fib (- n 1) (+ c p) c))))
Объяснение кода листинга программы
В данном коде определён функционал для вычисления чисел Фибоначчи.
- (defun fib (n &optional (c 1) (p 1)) — функция с именем fib, которая принимает два аргумента: n и (опционально) c и p. Аргумент n описывает число, до которого необходимо вычислить последовательность Фибоначчи. Аргументы c и p используются в качестве промежуточных результатов для хранения итерационных значений.
- (cond ((<= n 2) c) — это условие, которое проверяет, не превышает ли значение переменной n 2. Если это так, то функция возвращает значение переменной c.
- (t (fib (- n 1) (+ c p) c)) — это условие, которое проверяет, что значение переменной n больше 2. Если это так, то функция вызывает саму себя (fib), передавая в неё три аргумента: (- n 1), (+ c p) и c. При этом значение переменной c не меняется, поскольку оно используется как промежуточный результат для хранения итерационного значения. Значение переменной p также не меняется и используется как промежуточный результат для хранения итерационного значения. Значение переменной c в этом случае будет равно значению переменной p.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д