-3

如果您有一个列表( (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))))`

我不确定如何处理频率过程,以及如何从中调用计数器过程

谢谢!

4

1 回答 1

1

对于这样的事情,你将不得不使用像对这样的东西?因为您使用的是列表列表的树。

例如 (list (list 1 2) 3 4) 的汽车将成为列表 1 2。这意味着如果您尝试比较值,您将得到一个错误。您需要从对中分离出叶子(单个数字)才能进行比较。

于 2012-11-06T18:04:13.813 回答