javascript - Check Digit Sum Javascript-递归
问题描述
在递归中寻找Javascript解决方案以获取数字中所有数字的总和,直到结果为单个数字
例如,数字为“55555”,所有数字的总和为 25。因为这不是一位数字,所以将添加 2 和 5,结果为 7。
我根据算法尝试了以下解决方案。
function getSum(n) {
let sum = 0;
while(n > 0 || sum > 9)
{
if(n == 0)
{
n = sum;
sum = 0;
}
sum += n % 10;
n /= 10;
}
return sum;
}
console.log(getSum("55555"));
解决方案
这会起作用,但我几乎可以肯定有一个我还没有看到的漂亮的单线解决方案。
function singleDigitSum(str) {
str = [...str].reduce((acc, c) => { return Number(c) + acc }, 0)
while (str.toString().length > 1) {
str = singleDigitSum(str.toString());
}
return str
}
console.log(singleDigitSum("55555"))
解释:
作为函数的第一步,您将重新分配给传递给函数的参数的 reducer 函数的结果,该函数将String
. 为了能够使用Array.prototype.reduce()
功能,我将您传播str
到array
using 中[...str]
。
然后,只要减速器返回一个多于一位的值,就冲洗并重复。当 while 循环退出时,结果是单个数字并且可以return
编辑。
推荐阅读
- google-cloud-firestore - 无法从 Firebase 中删除 sha-1 指纹
- javascript - 在项目之间共享 react ts 组件的其他方式
- android - 为什么 expo 不能在我的移动设备上运行?
- text-to-speech - 文本到语音的 Nexmo API 更改?
- povray - 使用图像对球体进行纹理处理,使其面向相机
- algorithm - 计算火柴网格中所有方块的程序
- java - 一个接一个地显示文字Android
- python - 如何使用 openpyxl.kinda 根据用户输入动态设置单元格样式,例如在排行榜中突出显示当前用户位置
- java - Hashtable 获取请求返回 null 而不是请求的数据
- python - Django Mysql字符串转换utf8和unicode?