I am trying to understand exactly how this function operates and cannot figure it out in my brain. Please can you show the step-by-step process of the code?
I've been sitting here trying to figure this example out in my head using a calculator on my computer and running through the code many many times in my head, but it just doesn't add up. Pun not intended.
constructor(values) {
this.values = values || []
}
const list = new List([1,2,3,4])
expect(list.foldl((acc, el) => el / acc, 24)).toEqual(64);
foldl(fn, initialValue) {
let acc = initialValue;
for (let i in this.values) {
acc = fn(acc, this.values[i]);
}
return acc; // 64... HOW??!
}
Okay here's how I run through it in my head. Please can you explain to me why I'm wrong, and show me what is correct in pseudocode as I've done below.
```
// accumulator is 24 and therefore we divide the first element of the array which is 1 by 24 which equals .041666667
// the accumulator now ACCUMULATES which means 24 plus .041666667 is equal to 24.041666667
// now the accumulator is 24.041666667 and we divide the second element of the array which is 2 by 24 which equals .083333333
// the accumulator which is 24.041666667 now adds .083333333 which equals 24.874999997
// now the accumulator is 24.874999997 and we divide the third element of the array which is 3 by 24.874999997 which equals .120603015
and so on...
What am I missing here?