racket - 编写一个程序,根据一个数字确定其位数的平均值
问题描述
我必须制作一个平均数字位数的程序,但这对我来说是不可能的,尤其是除法(余数)的模块。
我可以做什么?
(define (digitos number)
(cond
[(and (>= number 1) (< number 11)) 1]
[else (+ 1 (digitos (/ number 10)))]))
(define (modulo_ n m)
(cond
[(real? n) (- n (* (floor (/ n m)) m))]
[else (remainder n m)]))
(define (sumatoria number)
(cond
[(equal? number 0) 0]
[else (+ (modulo_ number 10) (sumatoria (/ number 10)))]))
(define (promedio number)
(/ (sumatoria number) (digitos number)))
;(promedio 40) ;3
解决方案
更新:您的问题重复 了如何计算位数? 计算列表中的数字 Racket 返回数字的奇数位之和 将数字 转换为数字列表
; only consider nature number 0,1,2,3,...
; if you want input Decimal use number->string
(define (cut-right-digit n)
(/ (- n (remainder n 10)) 10))
(define (sum-each-digit n result)
(cond
[(<= 0 n 9)
(+ result n)]
[else
(sum-each-digit (cut-right-digit n) (+ result (remainder n 10)))]))
(define (digits n result)
(cond
[(<= 0 n 9)
result]
[else
(digits (cut-right-digit n) (+ 1 result))]))
(define (avg-digits n)
(/ (sum-each-digit n 0) (digits n 1)))
;;; TEST
(avg-digits 0) ; 0
(avg-digits 1) ; 1
(avg-digits 11111) ; 1
(avg-digits 10203040506789) ; (/ 55 14)
(avg-digits 101001) ; 1/2
推荐阅读
- ubuntu - 在 Ubuntu 上 sudo ufw 导致 ssh 停止工作
- python - kafka-python:通过运行并发进程/脚本同时产生和使用来自同一主题的消息
- javascript - 我想收集所有用户的答案(选中的单选和复选框),看看用户是否选择了正确的答案。如果是这样,得分++
- ios - Google Vision Api Image 返回零
- python - 在赋值之前可能会引用局部变量“结果”
- .htaccess - 如何从我的 URL 中删除子文件夹?
- c# - Xamarin Forms 挂起数据加载
- python - 从给定整数中删除数字
- html - 通过选中复选框显示叠加菜单
- python - Apache 光束枢轴 /group by