Skip to content
Related Articles

Related Articles

Python program to print Pascal’s Triangle
  • Last Updated : 31 Dec, 2020

Pascal’s triangle is a pattern of the triangle which is based on nCr, below is the pictorial representation of Pascal’s triangle.

Example:

Input: N = 5
Output:
      1
     1 1
    1 2 1
   1 3 3 1
  1 4 6 4 1

Method 1: Using nCr formula i.e. n!/(n-r)!r!

After using nCr formula, the pictorial representation becomes:

          0C0
       1C0   1C1
    2C0   2C1   2C2
 3C0   3C1   3C2    3C3

Algorithm:



  • Take a number of rows to be printed, lets assume it to be n
  • Make outer iteration i from 0 to n times to print the rows.
  • Make inner iteration for j from 0 to (N – 1).
  • Print single blank space ” “.
  • Close inner loop (j loop) //its needed for left spacing.
  • Make inner iteration for j from 0 to i.
  • Print nCr of i and j.
  • Close inner loop.
  • Print newline character (\n) after each inner iteration.

Implementation:

Python3




# Print Pascal's Triangle in Java
from math import factorial
  
# input n
n = 5
for i in range(n):
    for j in range(n-i+1):
  
        # for left spacing
        print(end=" ")
  
    for j in range(i+1):
  
        # nCr = n!/((n-r)!*r!)
        print(factorial(i)//(factorial(j)*factorial(i-j)), end=" ")
  
    # for new line
    print()

Output:

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

Time complexity: O(N2)

Method 2: We can optimize the above code by the following concept of a Binomial Coefficient, the i’th 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).

C(line, i) = C(line, i-1) * (line - i + 1) / i

Implementations:

Python3




# Print Pascal's Triangle in Java
  
# input n
n = 5
  
for i in range(1, n+1):
    for j in range(0, n-i+1):
        print(' ', end='')
  
    # first element is always 1
    C = 1
    for j in range(1, i+1):
  
        # first value in a line is always 1
        print(' ', C, sep='', end='')
  
        # using Binomial Coefficient
        C = C * (i - j) // j
    print()

Output:

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

Time complexity: O(N2)

Method 3: This is the most optimized approach to print Pascal’s triangle, this approach is based on powers of 11.

11**0 = 1
11**1 = 11
11**2 = 121
11**3 = 1331

Implementation:

Python3




# Print Pascal's Triangle in Python
  
# input n
n = 5
  
# iterarte upto n
for i in range(n):
    # adjust space
    print(' '*(n-i), end='')
  
    # compute power of 11
    print(' '.join(map(str, str(11**i))))

Output:

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

Time Complexity: O(N)

However, this approach is applicable up to n=5 only.

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course

My Personal Notes arrow_drop_up
Recommended Articles
Page :