【发布时间】:2015-04-01 04:13:31
【问题描述】:
(define mystery2
(lambda (L)
(if (null? L)
L
(begin
(displayln L)
(append (mystery2 (cdr L))
(list (car L)))))))
我通过(mystery2 '((1 2) (3 4) 5 6))运行它
在这里,我不确定“开始”功能的作用。
另外,当我写“displayln L”时,它只给我们((1 2) (3 4) 5 6))。 既然是递归,不应该打印出递减的值吗?
请帮我理解为什么这里使用了“begin”,而 displayln 是这样工作的。
代码本身没有问题。
【问题讨论】:
-
注意它调用
mystery而不是它本身,所以我们不能说它是递归的。它可能是相互递归的,但mystery需要调用mystery2。