我正在尝试使用递归编写一个reduce函数。我正在学习递归及其练习的一部分,因此我试图了解什么在我的代码中不起作用。很高兴有任何帮助! 诗。它假设从数组的末尾开始(例如 yeh 变成 hey)
var strings = function(previous,current) {
return previous+current;
};
function reducing(arr,start,func) {
if (arr.length == 0) {
return start;
}
else if (arr.length == 1) {
return arr[0];
}
else {
return func(start,arr[arr.length-1]) + reducing(arr.slice(1),start,func);
}
}
reducing(['y','e','h'],'',strings)
最佳答案
这可能是问题所在,而不是减少(arr.slice(1),start,func)尝试减少(arr.slice(0,arr.length-1),start,func)如下:
function reducing(arr,start,func) {
if (arr.length == 0) {
return start;
}
else if (arr.length == 1) {
return arr[0];
}
else {
return func(start, arr[arr.length-1]) + reducing(arr.slice(0, arr.length -1),start,func);
}
}
关于javascript - 如何编写递归reduce函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37692644/