Trying to understand recursion
I'm currently using
trying to do
Try to calculate a sum recursively without Array.reduce by implementing a function which accepts an array of numbers and an accumulating parameter. Take one element of the array and add it to the accumulator.
as suggested on this tweet reply prompted by my tweet about not having a deep understanding of recursion and array.reduce
Youre gonna need a server and point it towards index.html. If you're using visual studio code you can use five server(Live server) . It's what I'm using
./index.js
// console.log("hi there");
const myarr = [9, 8, 3, 6, 7, 4];
const accumulator = function (acc, arr) {
// console.log("bloody arr", arr);
//do add to acc
// console.log({ acc, arr });
if (arr.length == 0) {
return acc;
} else {
const num = arr.pop();
acc = acc + Number(num);
// console.log("logging steps=>", acc, "with", num);
accumulator(acc, arr);
}
};
const calling = accumulator(0, myarr);
console.log("calling", calling);
It failed to return the answer even through it breaks at the right point.
./index2.js
const myarr = [9, 8, 3, 6, 7, 4];
const accumulator = (arr, acc = 0, done) => {
if (arr.length == 0) return done(acc);
const num = arr.pop();
acc = acc + Number(num);
// log for visibility
console.log({ num, acc, arr });
accumulator(arr, acc + Number(num), done);
};
const handleAccumulatorFinish = (accumulated) => {
console.log("accumulated", accumulated);
};
const accumulated = accumulator(myarr, 0, handleAccumulatorFinish);
the chad version
index3.js
const myarr = [9, 8, 3, 6, 7, 4];
const adder = (arr) => {
// return zero when array is finished
//doesnt return without it
if (arr.length === 0) return 0;
//call adder with the remaining array after adding the last item through popping
else return arr.pop() + adder(arr);
};
console.log(adder(myarr));