У меня есть два определения, для генеалогического древа и человека.Взаимная рекурсия в ракетке, что делает cond делать две вещи
; a family-tree is:
; (make-person list-of-family-tree symbol number symbol)
; a person is:
; (define-struct person [children name date eyes])
мне нужно сделать «взаимно рекурсивных» функцию, которая подсчитывает количество потомков в дереве (включая человека). Но я не могу понять, как сделать cond делать больше, чем одно, если условие выполнено.
т.е .:
(define (count-descendants person1)
(cond [(empty? (person-children person1)) +0]
[else (count-descendants (first (person-children person1)))/*also +1 here*/
(count-descendants (rest (person-children person1)))/*also +1 here*/]))
Любая идея, как рекурсивный вызов функции на другие части списка, и добавить один?
Это большое спасибо! Просто обратите внимание, что последний «person1» должен быть (person-children person1), чтобы он работал, потому что потомки-потомки просто берут список – Acoustic77
К сожалению. Спасибо, что указали это. Теперь это исправлено. Рад, что смог помочь! – Rptx