Не могу разобраться - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д