Python Examples

Python Program - Fibonacci Sequence



Fibonacci terms are generally represented as Fn. A Fibonacci term is the sum of two previous terms and starts with 0 and 1. Mathematically, it can be represented as:

Fn = Fn-1 + Fn-2

With boundary conditions: F0 = 0 and F1 = 1

The Fibonacci Sequence: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233...

Method 1: Using Recursive method

In the example below, a recursive function called fib() is created to find out the nth term of Fibonacci sequence.

def fib(n):
  if n == 0:
    return 0
  elif n == 1:
    return 1
  else:
    return fib(n-1) + fib(n-2)

print("Fibonacci 5th term:", fib(5))
print("Fibonacci 6th term:", fib(6))
print("Fibonacci 7th term:", fib(7))

The above code will give the following output:

Fibonacci 5th term: 5
Fibonacci 6th term: 8
Fibonacci 7th term: 13

Method 2: Using Dynamic Programming

The Fibonacci term can also be estimated using dynamic programming. As compared to the recursive method, it calculates a specific term of the sequence only once.

def fib(n):
  #creating a list which contains Fibonacci terms
  f = [0 for i in range(0,n+1)]
  f[0] = 0
  f[1] = 1
  for i in range(2, n+1):
    f[i] = f[i-1] + f[i-2]
  return f[n]

print("Fibonacci 6th term:", fib(6))
print("Fibonacci 7th term:", fib(7))
print("Fibonacci 8th term:", fib(8))

The above code will give the following output:

Fibonacci 6th term: 8
Fibonacci 7th term: 13
Fibonacci 8th term: 21

Method 3: Using Short-hand If-else method (Ternary operator)

This can also be achieved using short-hand if-else statements.

def fib(n):
  y = 0 if (n == 0) else 1 if (n == 1) else fib(n-1) + fib(n-2)
  return y

print("Fibonacci 8th term:", fib(8))
print("Fibonacci 9th term:", fib(9))
print("Fibonacci 10th term:", fib(10))

The above code will give the following output:

Fibonacci 8th term: 21
Fibonacci 9th term: 34
Fibonacci 10th term: 55

Method 4: Space optimized method

In this method, only three variables are used which changes in each iteration and finally nth term of Fibonacci Sequence is calculated.

def fib(n):
  a, b = 0, 1
  c = 0
  if n == 0:
    return a
  for i in range(2, n+1):
    c = a + b
    a = b
    b = c
  return b

print("Fibonacci 9th term:", fib(9))
print("Fibonacci 10th term:", fib(10))
print("Fibonacci 11th term:", fib(11))

The above code will give the following output:

Fibonacci 9th term: 34
Fibonacci 10th term: 55
Fibonacci 11th term: 89

Method 5: Using power of matrix

A Fibonacci sequence term can also be calculated as power of matrix. A Fibonacci sequence holds below mentioned property:

power of matrix

To calculate Fn,power of matrixis calculated and A01 will be the Fn.

def fib(n):
  initial = [[1, 1], [1, 0]]
  Final = [[1, 1], [1, 0]]
  if n == 0:
    return 0
  else:
    for i in range(1, n):
      a = Final[0][0]*initial[0][0] + Final[0][1]*initial[1][0]
      b = Final[1][0]*initial[0][0] + Final[1][1]*initial[1][0]
      c = Final[0][0]*initial[0][1] + Final[0][1]*initial[1][1]
      d = Final[1][0]*initial[0][1] + Final[1][1]*initial[1][1]
      Final[0][0] = a
      Final[1][0] = b
      Final[0][1] = c
      Final[1][1] = d 
  return Final[0][1]

print("Fibonacci 10th term:", fib(10))
print("Fibonacci 11th term:", fib(11))
print("Fibonacci 12th term:", fib(12))

The above code will give the following output:

Fibonacci 10th term: 55
Fibonacci 11th term: 89
Fibonacci 12th term: 144