当对数组元素求和时,递归函数根据顺序返回不同的值
recursive function return different values depending of order when summing array elements
我实现了以下递归JS函数来获取数组中元素的和。此功能工作正常,当输入[1,2,3]时返回6,这是正常的。
function sumOfNumbers(array) {
if (array.length == 1) {
return array[0];
} else {
last = array.length - 1;
return array[last] + sumOfNumbers(array.slice(0, last));
}
}
但是,当将总和的顺序更改为:时
return sumOfNumbers(array.slice(0,last)) + array[last];
它为[1,2,3]返回5。有人知道为什么吗?
因为变量last
是全局的,在array[last]
看到它之前,您将通过调用sumOfNumbers(array.slice(0,last))
来更改它。
相关文章:
- 可以链接 '.then() 的返回响应,顺序与 '.then()' 的顺序不同
- 来自函数 Javascript 的 NaN 返回值 ||函数执行顺序
- 使用Node中的Q promise库对值数组顺序调用/执行相同的函数;并返回带有结果的新数组/集合
- AngularJS-ngRepeat对对象的返回顺序与vanillar.in循环不同
- For循环以错误的顺序返回promise
- 如何按顺序记录多个函数的返回
- 按调用顺序返回由Ajax/HTTP生成的数据列表
- 使用Q.js按顺序返回循环的GET请求
- 为什么更改总和顺序会返回不同的结果
- 返回公共子节点的顺序
- 从顺序 jQuery ajax 调用返回承诺
- AJAX 响应不保留从服务器返回的 LinkedHashMap 的顺序
- 循环通过LI's在一个顺序中,然后返回另一个顺序,同时逐渐消失
- 反转数组的顺序并返回其大小javascript
- 返回表单提交中列表项的随机顺序
- jQuery find-返回元素的顺序是什么
- 通过对象返回的键的顺序.对象中的键
- 我如何存储for循环的计数,承诺以任意顺序返回
- 使用jquery,当元素不是按连续顺序排列时,如何返回具有下一个连续ID的元素?
- getElementsByClassName/Id返回的数组中元素的顺序是否一致?