VOOZH about

URL: https://www.geeksforgeeks.org/cpp/cpp-program-for-pascals-triangle/

⇱ C++ Program For Pascal's Triangle - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

C++ Program For Pascal's Triangle

Last Updated : 23 Jul, 2025

Pascal's triangle is a triangular array of the binomial coefficients. Write a function that takes an integer value n as input and prints first n lines of the Pascal's triangle. Following are the first 6 rows of Pascal's Triangle.

1 
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

Method 1 ( O(n^3) time complexity )
Number of entries in every line is equal to line number. For example, the first line has "1", the second line has "1 1", the third line has "1 2 1",.. and so on. Every entry in a line is value of a Binomial Coefficient. The value of ith entry in line number line is C(line, i). The value can be calculated using following formula. 

C(line, i) = line! / ( (line-i)! * i! ) 

A simple method is to run two loops and calculate the value of Binomial Coefficient in inner loop. 

Output :

1 
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1

Auxiliary Space: O(1)
Time complexity of this method is O(n^3). Following are optimized methods.

Method 2( O(n^2) time and O(n^2) extra space )
If we take a closer at the triangle, we observe that every entry is sum of the two values above it. So we can create a 2D array that stores previously generated values. To generate a value in a line, we can use the previously stored values from array. 

👁 Image


Output:

1 
1 1
1 2 1
1 3 3 1
1 4 6 4 1

This method can be optimized to use O(n) extra space as we need values only from previous row. So we can create an auxiliary array of size n and overwrite values. Following is another method uses only O(1) extra space.
Method 3 ( O(n^2) time and O(1) extra space )
This method is based on method 1. We know that ith entry in a line number line is Binomial Coefficient C(line, i) and all lines start with value 1. The idea is to calculate C(line, i) using C(line, i-1). It can be calculated in O(1) time using the following. 

C(line, i) = line! / ( (line-i)! * i! )
C(line, i-1) = line! / ( (line - i + 1)! * (i-1)! )
We can derive following expression from above two expressions.
C(line, i) = C(line, i-1) * (line - i + 1) / i

So C(line, i) can be calculated from C(line, i-1) in O(1) time

Output:

1 
1 1
1 2 1
1 3 3 1
1 4 6 4 1

So method 3 is the best method among all, but it may cause integer overflow for large values of n as it multiplies two integers to obtain values.  

Comment
Article Tags: