所以我刚刚在 AlgoExpert 上解决了一个代码挑战,我试图更深入地了解我的代码为什么起作用,所以我使用 PythonTutor 来可视化代码的执行,我很想知道为什么每次递归调用使 arraySum 重新初始化为 0,但以某种方式保留了之前由数组中元素总和组成的值。
这是我的代码:
function productSum(array,multiplier=1) {
let arraySum = 0;
array.forEach(el => Array.isArray(el) ? arraySum+=productSum(el,multiplier+1) : arraySum += el)
return arraySum * multiplier
}
productSum([5,2,[7,-1],3,[6,[-13,8],4]])
这是 PythonTutor 中可视化的链接