In mathematics, the Fibonacci sequence is the series of numbers that follow this pattern:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...
By definition, each number in the sequence is the sum of the two numbers before it, with the exception of the first two numbers, which are both 1
.
In computer science, recursion is a problem-solving method where the solution depends on solutions to smaller instances of the same problem. When programming, we see recursion in practice when a function calls itself.
var guessNumber = function(num) {
var guess = prompt("Guess the number.");
// base case (no recursion)
if (guess === num) {
alert("Your guess is correct!")
// recursive case (function calls itself)
} else if (guess > num) {
alert("Your guess is too high. Try again.");
guessNumber(num);
// another recursive case
} else if (guess < num) {
alert("Your guess is too low. Try again.");
guessNumber(num);
}
};
Write a recursive function that returns the nth
number in the Fibonacci sequence.
var fib = function(n) {
// base case
// recursive case
}
fib(1) // returns 1
fib(2) // returns 1
fib(8) // returns 21
Imagine what would happen when you call fib(50)
(Hint: It will most likely crash your browser). When calling fib(50)
, how many times would fib(10)
run in your recursive solution? How about fib(1)
?
Can you think of another way to write your fib
function without using recursion? Try to implement a solution that runs in O(n) time (linear).