Concept Flow - Fibonacci Using Recursion
Call fibonacci(n)
Is n <= 1?
Yes→Return n
No
Call fibonacci(n-1)
Call fibonacci(n-2)
Add results
Return sum
The function calls itself with smaller numbers until it reaches 0 or 1, then adds results back up.
function fibonacci(n) {
if (n <= 1) return n;
return fibonacci(n - 1) + fibonacci(n - 2);
}
console.log(fibonacci(4));| Step | Call | Arguments | Return Value | Stack Depth |
|---|---|---|---|---|
| 1 | fibonacci | 4 | ? | 1 |
| 2 | fibonacci | 3 | ? | 2 |
| 3 | fibonacci | 2 | ? | 3 |
| 4 | fibonacci | 1 | 1 | 4 |
| 5 | fibonacci | 0 | 0 | 4 |
| 6 | fibonacci | 2 returns | 1 | 3 |
| 7 | fibonacci | 1 | 1 | 3 |
| 8 | fibonacci | 3 returns | 2 | 2 |
| 9 | fibonacci | 2 | ? | 2 |
| 10 | fibonacci | 1 | 1 | 3 |
| 11 | fibonacci | 0 | 0 | 3 |
| 12 | fibonacci | 2 returns | 1 | 2 |
| 13 | fibonacci | 4 returns | 3 | 1 |
| Variable | Start | After Step 1 | After Step 2 | After Step 3 | After Step 6 | After Step 8 | After Step 13 |
|---|---|---|---|---|---|---|---|
| n | 4 | 4 | 3 | 2 | 3 | 4 | 4 |
| Return Value | ? | ? | ? | ? | 1 | 2 | 3 |
| Stack Depth | 0 | 1 | 2 | 3 | 2 | 1 | 0 |
function fibonacci(n) {
if (n <= 1) return n;
return fibonacci(n - 1) + fibonacci(n - 2);
}
- Calls itself with smaller n
- Stops at n=0 or 1 (base cases)
- Adds results to get fibonacci(n)fib(4)?function fib(n) {
if (n <= 1) return n;
return fib(n - 1) + fib(n - 2);
}
console.log(fib(5));function fib(n) {
if (n == 0) return 0;
if (n == 1) return 1;
return fib(n - 1) - fib(n - 2);
}Pass the test and this pattern moves unknown