gpt4 book ai didi

javascript - 我将如何编写一个递归函数来对使用尾调用优化 (TCO) 的数字数组求和?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:53:26 26 4
gpt4 key购买 nike

所以我编写了这个函数,它使用递归对数字数组求和。我将如何优化这个尾调用?

function sum(array) {
if (array.length === 0) {
return 0;
} else {
return array[0] + sum(array.slice(1));
}
}

sum([1, 2, 3, 4, 5]); // 15

最佳答案

A TCO function需要返回一个函数调用,它会替换最后一个堆栈项并防止堆栈增长。

因此,您需要将total 也存储在函数中作为参数,并在递归结束时传递该值。

function sum(array, total = 0) {
if (array.length === 0) {
return total;
}
return sum(array.slice(1), total + array[0]);
}

console.log(sum([1, 2, 3, 4, 5])); // 15

关于javascript - 我将如何编写一个递归函数来对使用尾调用优化 (TCO) 的数字数组求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55469084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com