Я просто пытаюсь сделать эту среднюю функцию хвостовой рекурсивной. Мне удалось заставить свою функцию работать, и это потребовало значительных усилий. Впоследствии я пошел спросить своего профессора, была ли моя работа удовлетворительной, и он сообщил мне, что
- моя функция avg не была хвостовой рекурсивной
- avg не выдает правильный вывод для списков с болеечем один элемент
Я играл с этим кодом последние 2 часа и ударил немного о стену. Может ли кто-нибудь помочь мне определить, что я не понимаю здесь.
Говорил моему профессору, он был! = Полезно
(defun avg (aList)
(defun sumup (aList)
(if (equal aList nil) 0
; if aList equals nil nothing to sum
(+ (car aList) (sumup (cdr aList)) )
)
)
(if
(equal aList nil) 0
; if aList equals nil length dosent matter
(/ (sumup aList) (list-length aList) )
)
)
(print (avg '(2 4 6 8 19))) ;39/5
мои ожидаемые результаты для моего теста прокомментированы сразу после него 39/5