【发布时间】:2012-10-22 14:43:19
【问题描述】:
我正在尝试编写一个计算列表中所有项目的 Scheme 函数,但与可用的长度函数不同,它也会计算内部列表,因此 countAll '(a (a b)) 将返回 3 而不是 2。
第一个检查是一个空列表,第二个应该检查列表的头部当前是否是一个列表本身,然后它应该将该列表的长度添加到总数中并调用下一个递归调用,如果不是,它应该简单地跳到第三部分,这将对总数加一并递归调用函数。
我遇到语法错误,我不确定我的方法。我会以正确的方式解决这个问题吗?有没有更好/更简单的方法来做到这一点?
(define countAll
(lambda (list)
(if (null? list)
0
((if (list? (car list)
(+ length (car list)
(countAll (cdr list))))))
(+ 1
(countAll (cdr list))))))
(+ 1
(countAll(cdr list)
)))))
【问题讨论】:
-
我已经根据程序的结构编辑了问题以引入缩进。缩进如此怪异的事实应该暗示程序结构不太正确。
标签: list recursion count scheme