【发布时间】:2011-07-19 12:40:28
【问题描述】:
开始之前:是的,这是大学的家庭作业。在我被告知我懒惰和邪恶之前:这部分作业是转换我们已经拥有的两个函数,这个是第 6 个。
(define (flatten-list a-list)
(cond ((null? a-list) '())
((list? (car a-list))
(append (flatten-list (car a-list)) (flatten-list (cdr a-list))))
(else (cons (car a-list) (flatten-list (cdr a-list))))))
您可以猜到,即使列表是嵌套的,该函数也会将列表展平。我对转换的具体问题出现在 (list? (car a-list)) 条件中,我在其中进行了两次递归调用。我已经做了斐波那契,我可以通过在尾递归上设置两个“累加器”来做到这一点。但是,我的头脑还没有受过这方面的训练,还不知道该怎么做。
如果我得到提示而不是结果,我将不胜感激。谢谢!
【问题讨论】:
标签: functional-programming scheme tail-recursion