Scheme 函数count应该接受两个参数:一个原子和一个简单列表。函数应该返回在列表中找到原子的次数
我对这个计划还不熟悉,这个问题已经作为家庭作业交给我了。我不知道如何在计划中保持连续计数,这是我需要帮助的部分 问题又来了: 函数count应该接受两个参数:一个原子和一个简单列表。函数应该返回在列表中找到原子的次数 以下是我目前掌握的情况:Scheme 函数count应该接受两个参数:一个原子和一个简单列表。函数应该返回在列表中找到原子的次数,scheme,racket,Scheme,Racket,我对这个计划还不熟悉,这个问题已经作为家庭作业交给我了。我不知道如何在计划中保持连续计数,这是我需要帮助的部分 问题又来了: 函数count应该接受两个参数:一个原子和一个简单列表。函数应该返回在列表中找到原子的次数 以下是我目前掌握的情况: (define (count atm lst) (cond ((null? lst) 0) ((eq? atm (car lst)) (i don't know how to make a count) (count
(define (count atm lst)
(cond
((null? lst) 0)
((eq? atm (car lst)) (i don't know how to make a count) (count atm (cdr lst)))
(else (count atm (cdr lst)))))
任何帮助都将不胜感激
我仍然不明白,对于函数的每次迭代,在列表中找到原子的次数需要增加多少
这是老师给我的测试用例:
(约翰伯爵(约翰·保罗·乔治·林戈))
它应该返回2
我已经盯着这个问题看了很长时间了,请解释一下如何使计数有效。我的朋友,你非常接近这个问题的答案。要完成这个问题,您需要编写一个测试用例。您需要编写测试用例的原因是,您可以具体地思考代码片段的含义。最具体地说,您需要考虑您正在考虑的特定输入的
(count atm(cdr lst))
计算结果,然后考虑正确答案是什么,以及它们之间的关系。让我们看看您的代码
(define (count atm lst)
(cond
;; This is obviously correct
((null? lst) 0)
;; See below
((eq? atm (car lst)) (somefunction (count atm (cdr lst))))
;; The next one's find as well
(else (count atm (cdr lst)))))
如果
lst
的尾部(cdr
)包含n
出现的atm
,(计数atm(cdr lst))
应返回n
。然后,知道n
,如果(car lst)
是eq?
到atm
,那么lst
中有多少?我不知道如何让它计算在列表中找到的匹配数。我仍然坚持这个问题。花了一段时间,但我明白了,问题是我不知道我可以说(+1(计数atm(cdr lst)))。我们并没有真正学到那么多语法,这更多的是一个去研究和学习它为自己的一种学习。谢谢你的想法。太好了!如果这里有一个教训的话,它可能是这样的:函数式语言的基础是像(+ee)
这样的表达式适用于任意选择的表达式E和E。如果这已经很明显,我道歉。我仍然不明白。你能给我举个例子说明你的意思吗?@Ethan:读最后一句话。如果n
在cdr
中出现了atm
,在car
中出现了一次,那么总共有多少次?
(define (count-atom atm list)
(cond((null? list) 0)
((eq? atm (car list)) (+ 1 (count-atom atm (cdr list))))
(else (count-atom atm (cdr list)))
)
)
(count-atom 'a '(a b a b a r a a a a a a a a a))