javascript - 使用递归对 1 和 num 之间的所有数字求和
问题描述
第一篇文章,所以我尽量遵守这里的规则。我正在尝试编写一个简单的函数,该函数使用递归来返回 1 和 num 之间所有数字的总和。我已经看到了这个解决方案,我知道它是如何工作的,但我不明白为什么这个解决方案不起作用。任何反馈表示赞赏。
const sumNums = (num) => {
let total = 0;
if(num >= 1) {
total += num;
sumNums(num-1);
}
return total;
}
console.log(sumNums(5)); // <-- returns 5
解决方案
您的特定解决方案不起作用,因为您没有返回if
分支中的内容。你只有一个回报,这就是为什么你会得到你传入的参数。您还需要添加内部调用才能使其正常工作。
适当的解决方案已经在这里。
编辑:我刚刚注意到您明确想要进行递归,这是一个带有(尾)递归的片段。
function sumNumsTailRec(n, acc = 0) {
if (n === 0) return acc
return sumNumsTailRec(n-1, acc + n)
}
推荐阅读
- c++ - 如何生成不同的不等数对?
- python-3.x - 如何从python中的数据科学表中删除行
- pyspark - 计算每个不同值在 PySparkSQL Join 中的列中出现的次数
- docker - 在 GCP 启动脚本期间查找用户名
- c# - 如何将 ViewModel 中的图像上传到数据库
- javascript - 参考中特定文本的 Firebase 侦听器
- macos - 在 MacO 中看不到 `/etc/ansible/hosts`
- javascript - 确认消息未显示在 javascript 联系表单上
- python - Numpy:genfromtxt 形成元组
- spring-cloud-contract - 错误:找不到存根。请确保调用了 spring-cloud-contract:convert