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. |
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!