Exercise 10: Trampoline (recursion optimization)
Problem Statement
Create a function `trampoline(fn)` that optimizes recursive function (prevent stack overflow).
Sample Output:
const factorial = trampoline((n, acc = 1) => n <= 1 ? acc : () => factorial(n - 1, n * acc)); factorial(10000) => (large number, no stack overflow)
Solution
const trampoline = (fn) => {
return (...args) => {
let result = fn(...args);
while (typeof result === "function") result = result();
return result;
};
};Explanation
Overall Goal:
- Recursive functions ko optimize karna (tail recursion).
Real world:
- Deep recursion: stack overflow prevention.
- Performance: iterative optimization.