Program for nth Catalan Number

Catalan numbers are a sequence of natural numbers that occurs in many interesting counting problems like following.

1) Count the number of expressions containing n pairs of parentheses which are correctly matched. For n = 3, possible expressions are ((())), ()(()), ()()(), (())(), (()()).

2) Count the number of possible Binary Search Trees with n keys

3) Count the number of full binary trees (A rooted binary tree is full if every vertex has either two children or no children) with n+1 leaves.

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

Recursive Solution

Following is the implementation of above recursive formula.

Python Program
# A recursive function to find nth catalan number
def catalan(n):
# Base Case
if n <=1 :
return 1

# Catalan(n) is the sum of catalan(i)*catalan(n-i-1)
res = 0
for i in range(n):
res += catalan(i) * catalan(n-i-1)

return res

# Driver Program to test above function
for i in range(10):
print catalan(i),

Output :

1 1 2 5 14 42 132 429 1430 4862
[ad type=”banner”]