Python Program for nth Catalan Number



In this article, we will learn about calculating the nth Catalan number.

Catalan numbers are a sequence of natural numbers that are defined by the recursive formula −

$$C_{0}= 1\:and\:C_{n+1}=\displaystyle\sum\limits_{i=0}^n C_{i}C_{n-i} for \:n\geq0;$$

The first few Catalan numbers for n = 0, 1, 2, 3, … are 1, 1, 2, 5, 14, 42, 132,429,...................

Catalan numbers can be obtained both by recursion and dynamic programming. So let’s see their implementation.

Approach 1: Recursion Method

Example

 Live Demo

# A recursive solution
def catalan(n):
   #negative value
   if n <=1 :
      return 1
   # Catalan(n) = catalan(i)*catalan(n-i-1)
   res = 0
   for i in range(n):
      res += catalan(i) * catalan(n-i-1)
   return res
# main
for i in range(6):
   print (catalan(i))

Output

1
1
2
5
14
42

The scope of all the variables and recursive calls are shown below.

Recursive function call structure for Catalan number in Python

Approach 2: Dynamic Programming Method

Example

 Live Demo

# using dynamic programming
def catalan(n):
   if (n == 0 or n == 1):
      return 1
   # divide table
   catalan = [0 for i in range(n + 1)]
   # Initialization
   catalan[0] = 1
   catalan[1] = 1
   # recursion
   for i in range(2, n + 1):
      catalan[i] = 0
      for j in range(i):
         catalan[i] = catalan[i] + catalan[j] * catalan[i-j-1]
   return catalan[n]
# main
for i in range (6):
   print (catalan(i),end=" ")

Output

1
1
2
5
14
42

The scope of all the variables and recursive calls are shown below.

Flowchart of Catalan number algorithm steps

Conclusion

In this article, we learned about the method of generating the nth Catalan number.

Updated on: 2019-09-11T12:10:47+05:30

498 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements