javascript - 递归没有正确运行?
问题描述
我正在练习递归,并试图用它来不断地在一个数字中添加单个数字,直到只剩下 1 个数字。
基本上,如果数字是84
,它会变成8+4 = 12
which 然后变成1 + 2 = 3
。
下面是我的尝试。不知道我错过了什么..
const weirdSum = (num) => {
let result = 0;
const split = num.toString().split('');
if(split.length > 1){
for(let i=0;i<split.length;i++){
result = result + (split[i]*1);
}
weirdSum(result); // pass result as argument, which will be split.
}
return result; // return result if split.length is 1
}
解决方案
let weirdSum = num => {
const split = num.toString().split('');
if(split.length > 1){
const sum = split.reduce((acc, it) => parseInt(it) + acc, 0)
return weirdSum(sum);
}
return num;
}
console.log(weirdSum(84));
console.log(weirdSum(123456));
推荐阅读
- android - Android FusedLocationProviderClient 并不总是有效
- selenium - 如何在 Katalon Studio 中制作新的数据库关键字并使用它们
- python - 每当我执行 cursor.execute 语句时,它只返回整数作为输出?
- mysql - 无法访问 docker 上的 wordpress 网站
- python - 在优雅地处理字符串列时查找所有列的范围(最大值和最小值之间的差异)
- mysql - 使用 sequelize.js 读取 sql 文件时出错
- php - 从 60.000 行中选择快速 10 行
- java - java-在搜索算法错误中使用try-catch
- c# - 实施 IComparable 时遇到问题
在 C# 中 - docker - 使用 Kubernetes 运行 Spring cloud(Zuul、Eureka 和 2 个 rest 后端服务)