javascript - ++Argument 在调用递归函数时返回的结果与参数 + 1 不同
问题描述
我试图解决的代码挑战:
编写一个接收“特殊”数组并返回其乘积和的函数;“特殊”数组是包含整数或其他“特殊”数组的非空数组。“特殊”数组的乘积和是其元素的总和,其中“特殊”数组内部的“特殊”数组本身相加,然后乘以它们的深度级别。
“特殊”数组的深度是它的嵌套程度。例如[]的深度为1;[[]] 中内部数组的深度为 2;[[[]]] 中最内层数组的深度为 3。
我试着像这样解决它:
const productSum1 = (array, multiplier=1) => {
let result = 0;
for ( const element of array) {
if ( Array.isArray(element)) {
result += productSum1(element, ++multiplier)
} else {
result += element;
}
}
return result* multiplier;
}
我的问题是关于乘数++。multiplier 的值在执行栈顶调用后将保持不变,而不是在前一次调用时返回到其先前的值。我必须减少(--multiplier)乘数才能返回正确的值。但是,当我使用 used multiplier + 1 时,它会在执行 top 调用后返回到之前的值。为什么会这样?
为我写得不好的问题道歉。我对编程很陌生,我相信可以用更好的方式来问这个问题。
解决方案
推荐阅读
- wordpress - 如何删除 Wordpress 控制台警告?
- visual-studio - 在 git 操作中运行用于构建 VS 项目(Linux config/wsl)的 powershell 脚本
- java - 在java中为实体创建角色?
- ios - 如果孩子使用环境对象,如何停止刷新视图
- powershell - 在 PowerShell 中从 2 个变量创建递增变量
- html - Python Selenium 从内联的锚点获取链接文本
- algorithm - 为数组中的每个元素查找 k 个最接近的整数
- typescript - 自动导入/类型不适用于我的 NPM 包
- python - 在 Python 中获取 xml 文件中的特定子项
- python - 在 Django 中实现“已保存的书籍”购物车