在列表球拍中计数数字
我有疑问,我使用的是球拍,我想列出一个列表的数字,但我不能。我试着用长,但我想,因为在列表球拍中计数数字
(countDigits“(4 5 6 78))> 5
的答案是5这是行不通的,但我不知道怎么样,我有一个数字计数的代码,但我不知道如何在列表中执行。 ¿我该怎么做?
这里是一个可能的解决方案:
(define (countDigits lst)
(apply +
(map (compose string-length number->string)
lst)))
说明:
- 对于列表中,我们把它转换为字符串
- 然后,我们获得每个字符串的长度每一个数字 - 那会告诉我们的位数
- 最后我们把所有长度加在一起
例如:
(countDigits '(4 5 6 78))
=> 5
这真的很有帮助,我想到的想法完全不同于此,谢谢 –
一个更简单的例子,不会让你的教授看两次:)
定期递归:
(define (countDigits list-of-digits)
(cond [(empty? list-of-digits) 0]
[else (+ 1 (countDigits (rest list-of-digits)))]))
尾递归:
(define (countDigits list-of-digits sum)
(cond [(empty? list-of-digits) sum]
[else (countDigits (rest list-of-digits) (+ 1 sum))]))
它抛出我出错:+:违反合同 预期:数量? 给出:#
哈哈......我的不好。如果你看,在我的常规递归函数中,我有一个错位的逗号,我只是直接输入到SO。语法应该是现在 –
'(define count-digits(compose1 string-length string-a podd *(咖喱地图〜a)))' –
真的很有用,我的想法完全错了,它的工作,谢谢 –