我正在创建一个使用递归来打印列表元素的简单代码:
(define (printList list)
(if (empty? list)
'()
(begin
(display (car list))
(printList (cdr list)))))
它确实有效,但我想知道是否有一种不打印空列表的方法。当我用(printList'(1 2 3 4))运行我的程序时,我得到了:
1 2 3 4()
有什么方法可以解决这个问题吗?
由于
答案 0 :(得分:5)
您的输出包含
display
s:1234
(颜色:粉红色)'()
(颜色:蓝色) Dr Racket不会打印该功能的结果void
,因此您可以在基本情况下返回void
:
(define (printList list)
(if (empty? list)
(void)
(begin
(display (car list))
(printList (cdr list)))))
但是说
会更优雅(define (printList list)
(unless (empty? list)
(display (car list))
(printList (cdr list))))
如果列表为空并且不需要明确的void
,则会隐式返回begin
。