我想從具有雙遞歸的方法返回一個列表(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'沒有效果 - 它們的值被忽略,只返回最後一個值。 –