https://github.com/oneted11/understanding-recursion
Understanding Recursion as a concept
https://github.com/oneted11/understanding-recursion
algorithm-challenges console-log html5 javascript recursion-exercises
Last synced: about 1 year ago
JSON representation
Understanding Recursion as a concept
- Host: GitHub
- URL: https://github.com/oneted11/understanding-recursion
- Owner: Oneted11
- Created: 2022-01-26T08:08:14.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2022-02-12T05:58:38.000Z (about 4 years ago)
- Last Synced: 2025-01-03T23:16:28.371Z (about 1 year ago)
- Topics: algorithm-challenges, console-log, html5, javascript, recursion-exercises
- Language: JavaScript
- Homepage:
- Size: 6.84 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# Understanding Recursion
Trying to understand recursion
## Learning resources
I'm currently using
### Theory
- https://www.geeksforgeeks.org/recursive-functions/
### Exercise
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](https://twitter.com/flosalihovic/status/1485865331562274816)
prompted by my [tweet](https://twitter.com/reithi_254/status/1485818354464169987) about not having a deep understanding of recursion and array.reduce
# How to run
Youre gonna need a server and point it towards index.html.
If you're using [visual studio code](https://code.visualstudio.com/) you can use [five server(Live server)](https://marketplace.visualstudio.com/items?itemName=yandeu.five-server) . It's what I'm using
# Trial One
./index.js
```javascript
// 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.
## Added callback with the help of a friend
./index2.js
```javascript
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);
```
## shortened and simplified version
> the chad version
index3.js
```javascript
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));
```