Bird
Raised Fist0
DSA Javascriptprogramming~20 mins

Fibonacci Using Recursion in DSA Javascript - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Fibonacci Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of Fibonacci Recursive Call
What is the output of the following JavaScript code that calculates Fibonacci numbers recursively?
DSA Javascript
function fib(n) {
  if (n <= 1) return n;
  return fib(n - 1) + fib(n - 2);
}
console.log(fib(5));
A5
B3
C13
D8
Attempts:
2 left
💡 Hint
Remember the Fibonacci sequence starts with 0, 1, 1, 2, 3, 5, 8...
❓ Predict Output
intermediate
2:00remaining
Output of Fibonacci Recursive Call with n=7
What is the output of this JavaScript code that calculates Fibonacci numbers recursively?
DSA Javascript
function fib(n) {
  if (n <= 1) return n;
  return fib(n - 1) + fib(n - 2);
}
console.log(fib(7));
A13
B8
C21
D34
Attempts:
2 left
💡 Hint
Recall the Fibonacci sequence: 0,1,1,2,3,5,8,13,21...
🔧 Debug
advanced
2:00remaining
Identify the Error in Fibonacci Recursive Function
What error will this JavaScript code produce when run?
DSA Javascript
function fib(n) {
  if (n < 1) return n;
  return fib(n - 1) + fib(n - 2);
}
console.log(fib(5));
AReturns 5 correctly
BReturns undefined
CMaximum call stack size exceeded (infinite recursion)
DSyntaxError
Attempts:
2 left
💡 Hint
Check the base case condition carefully.
🧠 Conceptual
advanced
2:00remaining
Time Complexity of Recursive Fibonacci
What is the time complexity of the naive recursive Fibonacci function?
AO(n)
BO(2^n)
CO(n^2)
DO(n log n)
Attempts:
2 left
💡 Hint
Think about how many calls are made for each fib(n).
🚀 Application
expert
2:00remaining
Output of Memoized Fibonacci Recursive Function
What is the output of this JavaScript code using memoization to calculate Fibonacci numbers?
DSA Javascript
function fib(n, memo = {}) {
  if (n <= 1) return n;
  if (memo[n]) return memo[n];
  memo[n] = fib(n - 1, memo) + fib(n - 2, memo);
  return memo[n];
}
console.log(fib(10));
A144
B34
C89
D55
Attempts:
2 left
💡 Hint
Memoization stores results to avoid repeated calculations.

Practice

(1/5)
1. What does a recursive Fibonacci function do when called with fib(4)?
easy
A. Throws a syntax error because recursion is not allowed
B. Returns 4 immediately without any calculation
C. Runs an infinite loop without returning
D. Calculates the 4th Fibonacci number by calling itself with smaller numbers

Solution

  1. Step 1: Understand recursive calls for fib(4)

    The function calls fib(3) and fib(2) to calculate fib(4).
  2. Step 2: Combine results of smaller calls

    fib(3) and fib(2) are calculated recursively and their sum is returned as fib(4).
  3. Final Answer:

    Calculates the 4th Fibonacci number by calling itself with smaller numbers -> Option D
  4. Quick Check:

    Recursive calls break problem into smaller parts [OK]
Hint: Recursion breaks problem into smaller calls [OK]
Common Mistakes:
  • Thinking recursion returns input directly
  • Assuming recursion causes infinite loop always
  • Confusing recursion with iteration
2. Which of the following is the correct base case syntax for a recursive Fibonacci function in JavaScript?
easy
A. if (n = 0) return 0;
B. if (n <= 1) return n;
C. if n == 1 then return 1
D. if (n > 1) return n;

Solution

  1. Step 1: Identify correct JavaScript syntax for base case

    The base case must check if n is 0 or 1 and return n using proper JavaScript syntax.
  2. Step 2: Validate each option

    if (n <= 1) return n; uses correct syntax: if (n <= 1) return n; Options A and B have syntax errors or wrong operators, D is logically incorrect.
  3. Final Answer:

    if (n <= 1) return n; -> Option B
  4. Quick Check:

    Base case uses if (n <= 1) return n; [OK]
Hint: Base case returns n when n is 0 or 1 [OK]
Common Mistakes:
  • Using assignment (=) instead of comparison (== or ===)
  • Missing parentheses in if condition
  • Incorrect logical condition for base case
3. What is the output of the following code?
function fib(n) {
  if (n <= 1) return n;
  return fib(n - 1) + fib(n - 2);
}
console.log(fib(5));
medium
A. 5
B. 8
C. 3
D. 13

Solution

  1. Step 1: Trace fib(5) recursive calls

    fib(5) = fib(4) + fib(3), fib(4) = fib(3) + fib(2), fib(3) = fib(2) + fib(1), and so on until base cases.
  2. Step 2: Calculate values bottom-up

    fib(0)=0, fib(1)=1, fib(2)=1, fib(3)=2, fib(4)=3, fib(5)=5.
  3. Final Answer:

    5 -> Option A
  4. Quick Check:

    Fibonacci(5) = 5 [OK]
Hint: Remember Fibonacci sequence: 0,1,1,2,3,5... [OK]
Common Mistakes:
  • Confusing index with Fibonacci value
  • Miscounting recursive calls
  • Assuming fib(5) is 8 or 13 incorrectly
4. Identify the error in this recursive Fibonacci function:
function fib(n) {
  if (n == 0) return 0;
  if (n == 1) return 1;
  return fib(n - 1) - fib(n - 2);
}
medium
A. The recursive step uses subtraction instead of addition
B. The base cases are incorrect
C. The function will cause infinite recursion
D. The function syntax is invalid

Solution

  1. Step 1: Check base cases correctness

    Base cases for n==0 and n==1 correctly return 0 and 1 respectively.
  2. Step 2: Analyze recursive step

    The recursive step uses subtraction (fib(n - 1) - fib(n - 2)) instead of addition, which is incorrect for Fibonacci.
  3. Final Answer:

    The recursive step uses subtraction instead of addition -> Option A
  4. Quick Check:

    Fibonacci sums previous two, not subtracts [OK]
Hint: Fibonacci adds previous two numbers, not subtracts [OK]
Common Mistakes:
  • Using wrong operator (+ vs -)
  • Confusing base cases
  • Assuming syntax error when logic is wrong
5. How can you optimize the recursive Fibonacci function to avoid repeated calculations?
hard
A. Remove base cases to speed up recursion
B. Increase the recursion depth limit
C. Use memoization to store and reuse computed values
D. Replace recursion with a while loop only

Solution

  1. Step 1: Understand repeated calculations in recursion

    Recursive Fibonacci recalculates same values many times, causing inefficiency.
  2. Step 2: Apply memoization to store results

    Memoization saves results of fib(n) calls in a cache to reuse and avoid repeated work.
  3. Final Answer:

    Use memoization to store and reuse computed values -> Option C
  4. Quick Check:

    Memoization improves recursion efficiency [OK]
Hint: Store results to avoid repeated recursion calls [OK]
Common Mistakes:
  • Thinking increasing recursion limit helps
  • Believing loops are only solution
  • Removing base cases causing infinite recursion
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard