Не могу разобраться - 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.