The original question can be found here
.
The question is asking to return the Nth fibonacci number. F(0) = 0
, F(1) = 1
and F(n) = F(n - 1) + F(n - 2)
.
The easist solution is using recursion. If you’re not familiar with this topic, feel free to read this short post here.
class Solution:
def fib(self, n: int) -> int:
if n < 2:
return n
return self.fib(n - 1) + self.fib(n - 2)
Time complexity: O(n)
. Space complexity: O(2^n)
. Why O(2^n)
? Normally for a recursion problem, we can think of each function call as a tree node in a tree. The time complexity will be number of nodes in the tree, which equals to branch factor ^ depth
. In this case, branch factor is 2, and depth is n, thus O(2^n)
.