【发布时间】:2016-07-05 23:19:00
【问题描述】:
我正在尝试在 Dr Racket 中创建一个计数器,该计数器将遍历嵌套列表并输出计数。
I currently have this code(我把所有的3都留在了列表中)
目前正在输出 3(这些是前三个 3) 我假设它已经到达第一个嵌套列表的末尾并在该点停止,但我似乎不知道该怎么做。 (是的,这是一个任务,但这是我们在球拍中的第二个任务,也是春假期间的第二个任务。它是我们回去的那一天)
(define (genCounter lst target c)
(cond
((empty? lst) c)
((list? (first lst))
(genCounter (first lst) target c))
((eq? (first lst) target)
(genCounter (rest lst) target (+ c 1)))
(else
(genCounter (rest lst) target c))))
我不指望你给我答案,而只是解释应该改变什么,或者比我的教授教我更多关于语言的知识。
所以我将列表更改为 (genCounter '(3 (3 3 (3 3 3)) 3 (3 (3))) 3 0) 并返回 6(我测试发现它是前 6 个被退回。我相信当涉及到其中一个列表的末尾时,它会停止执行该函数,但是就像我说的,我不确切知道要实现什么来修复它(尽管我知道出了什么问题和它)。
这是我最终创建的内容:
(define (genCounter lst target)
(if (null? lst) 0
(let ((current (first lst)))
(cond
((list? current)
(+ (genCounter current target) (genCounter (rest lst) target)))
((eq? current target)
(+ 1 (genCounter (rest lst) target)))
(else
(genCounter (rest lst) target))))))
【问题讨论】:
-
发布您的代码而不是代码图像。
-
我已经更新它以包含实际代码。
标签: list nested racket counter nested-lists