我有一个疑问,我正在使用Racket,我想计算一个列表的数字,但我不能。我尝试长度,但它不能按我的意愿工作,因为
(countDigits'(4 5 6 78))> 5
答案必须是5但是,我不知道如何,我有一个数字中的计数位数的代码,但我不知道如何在列表中这样做。 ¿我怎么能这样做?
答案 0 :(得分:2)
这是一个可能的解决方案:
(define (countDigits lst)
(apply +
(map (compose string-length number->string)
lst)))
说明:
例如:
(countDigits '(4 5 6 78))
=> 5
答案 1 :(得分:0)
一个更天真的例子,不会让你的教授看起来两次:)
常规递归:
(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))]))