gpt4 book ai didi

scheme - Racket\Scheme 中的返回类型

转载 作者:太空宇宙 更新时间:2023-11-03 19:00:30 25 4
gpt4 key购买 nike

我是 Scheme 的新手,我想知道如何整理我作为赋值编写的递归函数的返回值。该函数只是按照从最低值到最高值的顺序打印出 BST。我的问题有点迂腐,但我很好奇。该函数的输出是一个数字列表,但递归实现导致在最后返回一个空列表。即 8 16 20 '()。有没有一种简单的方法可以只返回数字列表并省略空列表?我可以想出几种方法;构建一个新的列表或字符串并在最后返回它,但它会为这样一个简单的任务增加相当多的开销。有没有更简单的方法来实现这个结果?谢谢。

注意:作业已经完成,此时我应该是满分,所以不是作业题。

#lang racket

(define (show lst)

(cond
[(null? (cadr lst))
'()]

; recur smaller tree
[(< (car lst) (caaddr lst))
(show (cadr lst))
])

; print cur node
(writeln (car lst))

(cond
[(null? (cadr lst))
'()]

; recur larger tree
[(show (caddr lst))])

)

(show '(16 (8 (2 () ()) (10 () ())) (20 (18 () ()) (30 () ()))))

最佳答案

您可以在代码中将 '() 替换为 (void),因为 REPL 不会打印此值。或者完全避免给出返回值:

(define (show lst)
(unless (null? (cadr lst))
(when (< (car lst) (caaddr lst))
(show (cadr lst))))
(writeln (car lst))
(unless (null? (cadr lst))
(show (caddr lst))))

关于scheme - Racket\Scheme 中的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33100652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com