Program to find nth Catalan Number in Python

In this tutorial, you will learn about how to find the nth Catalan Number in Python in an easy way. First, we have to know about the Catalan numbers.

Catalan numbers:
The Catalan numbers are the special sequence of positive integers. They appear in various counting problems. The Catalan numbers for n=0, 1, 2, 3, … are 1, 1, 2, 5, 14, 42, 132, 429, …

We can find the nth Catalan number using the Recursive solution and the Binomial coefficient methods.

Method 1: Recursive Solution

Formula:

Catalan Numbers satisfy the following Recursive formula.

Program to find nth Catalan Number in Python

The following is the implementation of the above recursive formula.

def catalan(no): 
    if no<= 1 : 
        return 1 
    re=0
    for x in range(no): 
        re += catalan(x) * catalan(no-x-1) 
    return re
no=int(input("Enter the number:"))
an=catalan(no)
print("Catalan number is",an)

Input:

Enter the number:7

Output:

Catalan number is 429

Time Complexity:

  • The Time complexity of the above implementation is equivalent to nth Catalan Number. The value of the nth Catalan Number is exponential.
  • So, that makes time complexity exponential.

Method 2: Using Binomial Coefficient

We can also use the below formula to find the nth Catalan number.

Formula:

Using Binomial Coefficient

The following is the implementation of the above formula.

def binomialCoeff(no, k): 
    if (k >no - k): 
        k = no - k  
    res = 1
    for x in range(k): 
        res = res * (no - x) 
        res = res / (x + 1) 
    return res 
def catalanNum(no): 
    co = binomialCoeff(2*no, no) 
    return int(co/(no + 1)) 
no=int(input("Enter the number:"))
print("Catalan number:",catalanNum(no))

Input:

Enter the number:7

Output:

Catalan number: 429

Time Complexity:

The Time complexity of the above implementation is O(n).

Also read: Catalan Number in Python – Iterative Approach (Factorial)

Leave a Reply