Вычисление чисел Фибоначчи - 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))))

Объяснение кода листинга программы

В данном коде определён функционал для вычисления чисел Фибоначчи.

  1. (defun fib (n &optional (c 1) (p 1)) — функция с именем fib, которая принимает два аргумента: n и (опционально) c и p. Аргумент n описывает число, до которого необходимо вычислить последовательность Фибоначчи. Аргументы c и p используются в качестве промежуточных результатов для хранения итерационных значений.
  2. (cond ((<= n 2) c) — это условие, которое проверяет, не превышает ли значение переменной n 2. Если это так, то функция возвращает значение переменной c.
  3. (t (fib (- n 1) (+ c p) c)) — это условие, которое проверяет, что значение переменной n больше 2. Если это так, то функция вызывает саму себя (fib), передавая в неё три аргумента: (- n 1), (+ c p) и c. При этом значение переменной c не меняется, поскольку оно используется как промежуточный результат для хранения итерационного значения. Значение переменной p также не меняется и используется как промежуточный результат для хранения итерационного значения. Значение переменной c в этом случае будет равно значению переменной p.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы