【发布时间】:2017-01-19 09:07:18
【问题描述】:
我的目标是递归遍历任何给定列表并计算给定原子在列表中出现的次数。我不断收到涉及程序的错误。目前我的代码如下所示:
(define (count atom x)
(cond
((null? x) 0)
((not (list? (car x)))
(cond
((eqv? (car x) atom) (+ 1 (count(atom (cdr x)))))
(else(+ 0 (count atom (cdr x))))))
(else(+ (count atom (cdr x)) (count atom (car x))))))
(display(count 1 '(1 3)))
我尝试使用 car 检查第一个元素是否不是嵌套列表。如果不是,我将其与原子进行比较。如果它等于原子,我递归,将返回值加 1,否则我递归同时加 0。如果列表的第一个元素确实是一个嵌套列表,那么我使用 cdr 和 car 递归搜索它。
为了让我的问题更清楚,为什么我会收到此程序错误?我是否接近最终解决方案?
【问题讨论】:
-
你忘了问一个问题,但我猜你有一个“不是程序”的问题?
-
对不起!是的,那是我的问题。