Не могу разобраться - Lisp

Узнай цену своей работы

Формулировка задачи:

Нужно написать на Lisp Emacs древовидную рекурсию для вычисления числа Фибоначчи.Ругается и говорит, что не знает else.
(defun fib (n) 
     (cond ((= n 0) 0) 
              ((= n 1) 1) 
              (else (+ (fib (- n 1)) (fib (- n 2)))))))

Решение задачи: «Не могу разобраться»

textual
Листинг программы
(defun fibonacci (n)
  (if (< n 2) n
     (+ (fibonacci (- n 2)) (fibonacci (- n 1)))))
 
> (fibonacci 10)
55

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

В представленном коде реализована функция вычисления чисел Фибоначчи по имени fibonacci. Она принимает на вход один аргумент n, который является целым числом. Если n меньше или равно 2, то функция возвращает само n. В противном случае, функция рекурсивно вызывает саму себя два раза с аргументами n-2 и n-1, и возвращает их сумму. В данном случае, вызывается функция fibonacci с аргументом 10. Так как 10 больше 2, то происходит рекурсивный вызов функции с аргументами 8 и 9. Результат этих вызовов функции суммируется и возвращается в качестве результата. Результат вычисления чисел Фибоначчи для n=10 равен 55.

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


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

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

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