此函数必须使用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);