Recursion in javascript (non-informative content)
Ins1deTheFire
20.6K views
Recursion
An act of a function calling itself. Recursion is used to solve problems that contain smaller sub-problems. A recursive function can receive two inputs: a base case (ends recursion) or a recursive case (continues recursion). (MDN)
Use cases
Sum function with traditional for loop
1
2
3
4
5
6
7
8
9
10
11
function sum(arr) {
let result = arr[0];
for (let i = 1; i < arr.length; i++) {
result = result + arr[i];
}
return result;
}
console.log(`Array: [1,2,3]; Expected: 6; Actual: ${sum([1,2,3])}`);
console.log(`Array: [1,0,1]; Expected: 2; Actual: ${sum([1,0,1])}`);
Sum function with recursion
Deatiled example:
1
2
3
4
5
6
7
8
9
10
function sum(arr, initial = 0) {
if (arr.length === 0) {
return initial;
}
return sum(arr.slice(1), initial + arr[0]);
}
console.log(`Array: [1,2,3]; Expected: 6; Actual: ${sum([1,2,3])}`);
console.log(`Array: [1,0,1]; Expected: 2; Actual: ${sum([1,0,1])}`);
Deep map function without recursion
1
2
3
4
5
6
7
8
9
10
11
12
13
function deepMapAtoB(arr) {
return arr.map(value => {
if (Array.isArray(value)) {
return value.map(nestedValue => {
return nestedValue === 'a' ? 'b' : nestedValue;
});
}
return value === 'a' ? 'b' : value;
});
}
console.log(`Given: ["a",["a"],"c"]; Result: ${JSON.stringify(deepMapAtoB(["a",["a"],"c"]))}`);
Deep map function with recursion
1
2
3
4
5
6
7
8
9
10
11
function deepMapAtoB(arr) {
return arr.map(value => {
if (Array.isArray(value)) {
return deepMapAtoB(value);
}
return value === 'a' ? 'b' : value;
});
}
console.log(`Given: ["a",["a"],"c"]; Result: ${JSON.stringify(deepMapAtoB(["a",["a"],"c"]))}`);
Translated resources
Create your playground on Tech.io
This playground was created on Tech.io, our hands-on, knowledge-sharing platform for developers.
Suggested playgrounds