首页 > 解决方案 > ++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 调用后返回到之前的值。为什么会这样?

为我写得不好的问题道歉。我对编程很陌生,我相信可以用更好的方式来问这个问题。

标签: javascriptrecursion

解决方案


推荐阅读