我想从具有双递归的方法返回一个列表(BST,二叉搜索树)。我想实现它如下:使用递归与球拍返回列表
(define (mapBST BST someFunct)
(cond
[(null? BST)
'()]
[else (cons (car BST) (someFunct (car (cdr BST)))) (mapBST (car (cdr (cdr BST))) someFunct) (mapBST (car (cdr (cdr (cdr BST)))) someFunct) ]
)
)
调用此方法与此代码小片段
(define bst
'(3 "3"
(1 "1"
()
(2 "2"()())
)
(5 "5"()())
)
)
(mapBST bst string->number)
我也试过这个片段,但它返回((()())())
:
[else (printf (car (cdr BST))) (cons (mapBST (car (cdr (cdr BST))) someFunct) (mapBST (car (cdr (cdr (cdr BST)))) someFunct)) ]
的结果应该返回相同的BST,但使用数字而不是字符串作为值。
显示您要调用的代码,它生成的内容以及您期望生成的内容。正确缩进代码,在新行上启动每个子表达式。提示:在'[else A B C]'中,'A'和'B'没有效果 - 它们的值被忽略,只返回最后一个值。 –