Friday, June 12, 2026
HomeLanguagesPHP Program for nth Catalan Number

PHP 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.
C_0=1 \ and \ C_n_+_1=\sum_{i=0}^{n}C_iC_n_-_i \ for \ n\geq 0;
Following is the implementation of above recursive formula.

PHP




<?php
// PHP Program for nth
// Catalan Number
 
// A recursive function to
// find nth catalan number
function catalan($n)
{
     
    // Base case
    if ($n <= 1)
        return 1;
 
    // catalan(n) is sum of
    // catalan(i)*catalan(n-i-1)
    $res = 0;
    for($i = 0; $i < $n; $i++)
        $res += catalan($i) *
                catalan($n - $i - 1);
 
    return $res;
}
 
    // Driver Code
    for ($i = 0; $i < 10; $i++)
        echo catalan($i), " ";
 
// This code is contributed aj_36
?>


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

PHP




<?php
// PHP program for nth Catalan Number
 
// A dynamic programming based function
// to find nth Catalan number
function catalanDP( $n)
{
     
    // Table to store results
    // of subproblems
    $catalan= array();
 
    // Initialize first two
    // values in table
    $catalan[0] = $catalan[1] = 1;
 
    // Fill entries in catalan[]
    // using recursive formula
    for ($i = 2; $i <= $n; $i++)
    {
        $catalan[$i] = 0;
        for ( $j = 0; $j < $i; $j++)
            $catalan[$i] += $catalan[$j] *
                   $catalan[$i - $j - 1];
    }
 
    // Return last entry
    return $catalan[$n];
}
 
    // Driver Code
    for ($i = 0; $i < 10; $i++)
        echo catalanDP($i), " ";
 
// This code is contributed anuj_67.
?>


Output:

1 1 2 5 14 42 132 429 1430 4862

Time Complexity: O(n^2)
Auxiliary Space: O(n)

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

Last Updated :
13 Jun, 2022
Like Article
Save Article

<!–

–>

Similar Reads
RELATED ARTICLES

Most Popular

Dominic
32515 POSTS0 COMMENTS
Milvus
131 POSTS0 COMMENTS
Nango Kala
6897 POSTS0 COMMENTS
Nicole Veronica
12013 POSTS0 COMMENTS
Nokonwaba Nkukhwana
12109 POSTS0 COMMENTS
Shaida Kate Naidoo
7019 POSTS0 COMMENTS
Ted Musemwa
7262 POSTS0 COMMENTS
Thapelo Manthata
6976 POSTS0 COMMENTS
Umr Jansen
6964 POSTS0 COMMENTS