首先,我想编写一个函数:
接受:
(list 2 6 1 23...),它可能有重复的元素,称为"lst"输出:
中。
码
(define (recurse-lst bst lst)
(cond [(empty? roster) empty]
[(empty? lst) empty]
[else (recurse-lst (bst-add bst (first lst)) (rest lst))]))
; helper function
(define (bst-add bst sublst)
(cond [(empty? bst) (make-node (first sublst) empty empty)]
[(< (first sublst) (node-key bst))
(make-node (node-key bst)
(bst-add (node-left bst) (first sublst))
(node-right bst))]
[else
(make-node (node-key bst) (node-left bst)
(bst-add (node-right bst) (first sublst)))]))问题
我目前正在尝试将其用于嵌套列表;例如(list (list 1) (list 2).),每个子列表中只有一个元素。但是,它似乎不起作用,并且(第一个sublst)在bst-add中将sublst转换为一个数字,类似于(前1)。
我想我以前在其他代码中也有过类似的but,但我想不起来是什么时候和什么地方了。
发布于 2020-11-03 15:03:21
现在你已经
(define (recurse-lst bst lst)
(cond [(empty? roster)
...."lst“。
"roster“。
您需要始终将您的错误消息包含在文章中。
下一首。您调用(bst-add bst (first lst)),因此该调用中的第二个参数已经是一个数字。然而,在bst-add的定义中,您将第二个参数命名为"sublst“,并将其视为列表。不用再吃first了。事实上,取一个数字的first是一个错误。
https://stackoverflow.com/questions/64648252
复制相似问题