sml - 如何使用 SML 解决数字根
问题描述
我在编写一个计算整数数字根的函数时遇到了麻烦。考虑取一个数字“n”的过程,添加它的数字,然后添加从它派生的数字的数字,等等,直到剩下的数字只有一个数字。最后一位数称为“n”的数字根。比如从6381开始得到的序列是(6381,18,9),所以6381的数字根是9。我的代码:
fun digits(m:int) =
if m < 10 then
[m]
else
let
val smallestDigit = m mod 10
val remainingDigits = m div 10
in
digits remainingDigits @ [smallestDigit]
end
fun sum(ints) =
if null ints then 0
else
(hd ints) + sum(tl ints)
fun digitalRoot(i:int) =
let
val results = sum(digits i)
in
results
end
我的代码仅部分有效。它得到 18,但我也无法得到 18 的总和。
解决方案
推荐阅读
- modelica - 如何使用 Dymola 命令窗口中的功能?
- github-actions - 我们如何在作业之间共享 ECR 登录步骤
- reactjs - ReactJS:在部署时替换 webpack 环境变量的策略
- .net - .Net Core Web API Swagger 没有找到该网址的网页:http://localhost/swagger
- php - 如何通过命令在数据库中保存抓取的数据
- typescript - 打字稿:条件返回类型
- java - Spring Batch:在作业运行时创建新步骤
- node.js - 当我将路径设置为 required 时,为什么我会在模型上得到 ValidationError:true
- spring-data-jpa - Spring Data JPA 中的软删除
- r - 识别重复行并仅将特定列设置为零