如果您有一个列表((1 4 5)5(6 2 5))和另一个列表(5 1 3 7 5(9 2 4)),我需要编写一个比较第一个项目的程序列表,看看他们是否在第二个。例如,(1 4 5)在(5 1 3 7 5(9 2 3))中出现0次。 5在此列表中出现2次,并且(9 2 4)出现0次。所以列表将返回(0 2 0)
我需要帮助编写一个带有两个列表的方案程序频率,第一个是每个组件进行比较的列表,第二个是计算第一个列表出现次数的列表。该过程应返回事件列表。
到目前为止,我被告知要制作两个程序,一个计算每个项目的出现次数(计数器),另一个用于在列表(频率)中跟踪它。到目前为止我已经这样做了:
(define (counter ele lst)
`(cond ((null? lst) `
'())
`((equal? ele lst)`
`(+ 1 (counter ele (cdr lst))))`
`(else`
`(counter ele (cdr lst)))))`
(define (frequency els lst)
`(if (null? els)`
`'()`
`(cons <???>`
`(frequency <???> lst))))`
我不知道如何处理频率程序,以及如何从中调用计数器程序
谢谢!
答案 0 :(得分:1)
对于这样的事情,你将不得不使用像对的东西?因为你在使用列表清单的树木。
例如(list(list 1 2)3 4)的汽车将成为列表1 2.这意味着如果您尝试比较值,您将收到错误。您需要从对中隔离叶子(单个数字)才能进行比较。