我正在制作一个简单的代码,使用递归来打印列表的元素:
(define (printList list)
(if (empty? list)
'()
(begin
(display (car list))
(printList (cdr list)))))
Run Code Online (Sandbox Code Playgroud)
它确实有效,但我想知道是否有一种不打印空列表的方法.当我用(printList'(1 2 3 4))运行我的程序时,我得到了:
1 2 3 4()
有办法解决这个问题吗?
谢谢
你的输出包括
displayS: 1234(颜色:粉红色)'()颜色:蓝色)如果是void,Dr Racket将不会打印该功能的结果,因此您可以void在基本情况下返回:
(define (printList list)
(if (empty? list)
(void)
(begin
(display (car list))
(printList (cdr list)))))
Run Code Online (Sandbox Code Playgroud)
但是说它会更优雅
(define (printList list)
(unless (empty? list)
(display (car list))
(printList (cdr list))))
Run Code Online (Sandbox Code Playgroud)
void如果列表为空并且不需要显式,则将隐式返回begin.