此数组添加递归问题中的TypeError



此函数必须使用JavaScript递归地添加数组中的所有常量。知道为什么我在这个递归函数中出现类型错误吗?

const slowAdd = (array) => {
if (array.length === 0) return 0;
const restOfArray = array.slice(1);
return array[0] + slowAdd(array[restOfArray]);
}
const dataArray = [2, 5, 7]
slowAdd(dataArray);

使用助手功能的相同问题:

const fastSum = (array) => {
return _fastSum(array, 0);
};
const _fastSum = (array, start) => {
if (start === array.length) return 0;
return array[start] + _fastSum(array, start + 1);
}
const dataArray = [2, 5, 7]
console.log(fastSum(dataArray));

为什么fastSum递归有效,而第一个却无效。

restOfArray本身就是一个数组,您正试图将其用作另一个数组的索引。array[restOfArray]将始终返回undefined

你应该通过restOfArray而不是array[restOfArray]

const slowAdd = (array)=>{

if(array.length === 0) return 0;
const restOfArray = array.slice(1);
return array[0] + slowAdd(restOfArray);
}
const dataArray = [2, 5, 7]
console.log(slowAdd(dataArray));
//Same Problem with this one.
const fastSum = (array)=>{
return _fastSum(array, 0);
};
const _fastSum = (array, start)=>{
if(start === array.length) return 0;
return array[start] + _fastSum(array, start + 1);
}
console.log(fastSum(dataArray));

restOfArray是数组

const slowAdd = (array) => {
if (array.length === 0) return 0;
const restOfArray = array.slice(1);
return array[0] + slowAdd(restOfArray);
}
const dataArray = [2, 5, 7]
slowAdd(dataArray);

最新更新