在方案一(sumanodos-pareja-tree tree)函数中定义了一个树 generic并返回一个新的通用树,其中每个数据都是包含数据的对 原始(左)及其子节点的总和(右):
我这样做:
(define (sumanodos-pareja-tree tree)
(let ((bosque-sumados (map sumanodos-pareja-tree (hijos-tree tree))))
(make-tree (cons (dato-tree tree) (suma-datos-raiz bosque-sumados))
bosque-sumados)))
(define (suma-datos-raiz bosque-sumados)
(if (null? bosque-sumados) 0
(let ((primer-arbol (car bosque-sumados)))
(+ (car (dato-tree primer-arbol))
(cdr (dato-tree primer-arbol))
(suma-datos-raiz (cdr bosque-sumados))))))
(define tree22 '(2 (7 (1 (10) (4))
(5))
(6 (2 (3)))
(4)))
(sumanodos-pareja-tree tree22)
但它会返回此错误;
cons: second argument must be a list, but received 2 and 42
我能做什么?
答案 0 :(得分:0)
这是对某些Racket学习语言的限制。使用list
代替cons
。