javascript - Javascript中递归求和数组的修改版本
问题描述
我在递归方面有点挣扎,刚刚解决了一个练习,你必须总结一个数组的所有元素。
function sumArr (para) {
if (para.length === 0) {
return 0
}
else {
return para.pop() + sumArr(para)
}
}
当被调用sumArr ( [2,3,4] )
时,它返回 7,正如预期的那样。但是,现在我稍微改变了功能
function sumArr (para) {
if (para.length === 0) {
return 0
}
else {
return para.pop() - sumArr(para)
}
}
当被调用时sumArr ( [2,3,4] )
,它返回 3,我无法理解。
感谢您阅读甚至帮助我更好地理解递归!
解决方案
您可以返回一个字符串而不是计算值并查看括号。
function sumArr(para) {
if (para.length === 0) return 0;
let pop = para.pop(),
temp = `(${pop} - ${sumArr(para)})`;
console.log(pop, temp);
return temp;
}
console.log(sumArr([2, 3, 4]));
推荐阅读
- python - boto3 describe_fleets api 未获取所有车队信息
- apache-flink - Flink 保存点每次都从头开始重新启动我的一次性源(S3 和 Kinesis)
- python - 计算由字符串的混合值和字符串列表组成的 pandas 数据框列中的唯一值
- javascript - 使用 moment.js 将今天的时间添加到明天的日期 js
- sql - 如何验证按下提交按钮时为空的交互式网格
- webpack - 如何强制 webpack 为资源生成动态 publicPath
- regex - 为匹配特定模式的字符串添加前缀
- php - 我如何使用@ManyToMany Symfony4 持久化数据
- docker - 在创建 docker 容器时,我应该更喜欢在 Dockerfile 中定义安装,还是应该添加一个从 DockerFile 调用的脚本?
- css - React CSS 转换组 - 使用 post css 和 CX 时如何设置 className?