以前我有一个关于在频率列表中添加一个字符(Add a character to a frequency list)的问题,它已经解决了,但我在项目的其余部分再次遇到问题。接下来的两个功能正在起作用:
编写一个创建频率列表的功能(来自字符列表)
(statistiques '("a" "b" "r" "a" "c" "a" "d" "a" "b" "r" "a"))
→ (("a" 5) ("r" 2) ("b" 2) ("d" 1) ("c" 1))
我的代码:
(define statistiques
(lambda (l)
(if (null? l)
l
(ajoute1(car l)(statistiques (cdr l))))))
编写一个插入一对的函数(一个字符和一个表示该列表中出现该字符的数字),在按出现次数排序的对列表中 < / p>
(inserefreq '("b" 2) '(("d" 1) ("a" 5)))
→ (("d" 1) ("b" 2) ("a" 5))
(define inserefreq
(lambda (c l)
(cond ((null? l)
(list c))
((<= (cadr c) (cadar l))
(cons c l))
(else
(cons (car l) (inserefreq c (cdr l)))))))*
然后问题出在下一个问题上,即要求通过连续插入对频率列表进行排序
(triefreq '(("a" 5) ("r" 2) ("b" 2) ("d" 1) ("c" 1)))
→ (("d" 1) ("c" 1) ("r" 2) ("b" 2) ("a" 5))
我的代码:
(define tirefreq
(lambda (l)
(inserefreq(car l) (tirefreq (cdr l)))))
结果/错误:
答案 0 :(得分:0)
当l
为空时,您只是错过了基本情况:
(define triefreq
(lambda (l)
(if (null? l)
'()
(inserefreq (car l) (triefreq (cdr l))))))