Я стараюсь, чтобы мои ноги были мокрыми с использованием схемы рекурсии, однако, неважно, что я пытаюсь, я всегда получаю сообщение об ошибке, когда начинает оценивать первую ветвь оператора if. Ошибка аналогична: «Невозможно вызвать 0. 0 - это не функция». Этот ноль действительно является x в условном, но я не могу понять, почему это происходит. После некоторой отладки времени я пришел к выводу, что это действительно просто проблема рекурсии, которую я не совсем понимаю.Рекурсия схемы с условным
Возможно, кто-то может указать мне в правильном направлении?
(define nums (list 1 5 6 7 8 9))
(define (find-len my-list x) (
(if (null? my-list)
x
(find-len (cdr my-list) (+ 1 x)))))
(define (len my-list) (find-len my-list 0))
(len nums)
Спасибо! Я все еще привык к смещению функционального программирования. – corasan
Может быть, развернуть, чтобы показать некоторые идиоматические способы написания процедуры длины списка? +1 – naomik
Более идиоматический, чем использование встроенной процедуры длины? ;) –