This solution is generated by ChatGPT, correctness is not guaranteed.

AI solution for JavaScript Coding Question on BFE.dev
86. Generate Fibonacci Number

Solution:

There are multiple ways to implement the fib(n) function. One of the simplest ways is to use recursion.

function fib(n) {
  if (n === 0) return 0;
  if (n === 1) return 1;
  return fib(n-1) + fib(n-2);
}

This function checks the base cases where n is either 0 or 1, and returns their respective values. If n is greater than 1, it calls itself twice with n-1 and n-2, and adds the results to get the n-th Fibonacci number.

The time complexity of this function is O(2^n), because in the worst case scenario, each call generates two new calls, resulting in an exponential growth. The space complexity is also O(n), because the function call stack will have a maximum depth of n.

A more efficient way to generate Fibonacci numbers is to use iteration and store the previous two values.

function fib(n) {
  if (n === 0) return 0;
  if (n === 1) return 1;
  let prev = 0, curr = 1, next;
  for (let i = 2; i <= n; i++) {
    next = prev + curr;
    prev = curr;
    curr = next;
  }
  return curr;
}

This function starts with prev equal to 0 and curr equal to 1, and iterates n-1 times, adding prev and curr to get next, and updating the variables accordingly. The final value of curr is the n-th Fibonacci number.

The time complexity of this function is O(n), because it iterates n-1 times, and the space complexity is O(1), because it uses a constant amount of space to store the variables.