# C# 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 (See this)
See this for more applications.

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

## Recommended: Please solve it on “PRACTICE ” first, before moving on to the solution.

Recursive Solution
Catalan numbers satisfy the following recursive formula.

Following is the implementation of above recursive formula.

## C#

 // A recursive C# program to find  // nth catalan number  using System;     class GFG {         // A recursive function to find      // nth catalan number      static int catalan(int n)      {          int res = 0;             // Base case          if (n <= 1) {              return 1;          }          for (int i = 0; i < n; i++) {              res += catalan(i)                     * catalan(n - i - 1);          }          return res;      }         public static void Main()      {          for (int i = 0; i < 10; i++)              Console.Write(catalan(i)                            + " ");      }  }     // This code is contributed by  // nitin mittal.

Output:

1 1 2 5 14 42 132 429 1430 4862


Dynamic Programming Solution
We can observe that the above recursive implementation does a lot of repeated work (we can the same by drawing recursion tree). Since there are overlapping subproblems, we can use dynamic programming for this. Following is a Dynamic programming based implementation in C++.

Please refer complete article on Program for nth Catalan Number for more details!

My Personal Notes arrow_drop_up
Article Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.