# Java Program to Print Pascal’s Triangle

• Difficulty Level : Medium
• Last Updated : 12 Sep, 2022

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```

Approach #1:

nCr formula:

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, 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) //it’s 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.

Below is the implementation of the above approach:

## Java

 `// Print Pascal's Triangle in Java``import` `java.io.*;` `class` `GFG {``    ``public` `int` `factorial(``int` `i)``    ``{``        ``if` `(i == ``0``)``            ``return` `1``;``        ``return` `i * factorial(i - ``1``);``    ``}``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `n = ``4``, i, j;``        ``GFG g = ``new` `GFG();``        ``for` `(i = ``0``; i <= n; i++) {``            ``for` `(j = ``0``; j <= n - i; j++) {` `                ``// for left spacing``                ``System.out.print(``" "``);``            ``}``            ``for` `(j = ``0``; j <= i; j++) {` `                ``// nCr formula``                ``System.out.print(``                    ``" "``                    ``+ g.factorial(i)``                          ``/ (g.factorial(i - j)``                             ``* g.factorial(j)));``            ``}` `            ``// for newline``            ``System.out.println();``        ``}``    ``}``}`

Output

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

Time Complexity: O(N2)

Approach #2:

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`

Below is the Implementation of given approach:

## Java

 `// Print Pascal's Triangle in Java``import` `java.io.*;``class` `GFG {` `    ``// Pascal function``    ``public` `static` `void` `printPascal(``int` `n)``    ``{``        ``for` `(``int` `line = ``1``; line <= n; line++) {``            ``for` `(``int` `j = ``0``; j <= n - line; j++) {` `                ``// for left spacing``                ``System.out.print(``" "``);``            ``}` `            ``// used to represent C(line, i)``            ``int` `C = ``1``;``            ``for` `(``int` `i = ``1``; i <= line; i++) {` `                ``// The first value in a line is always 1``                ``System.out.print(C + ``" "``);``                ``C = C * (line - i) / i;``            ``}``            ``System.out.println();``        ``}``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `n = ``4``;``        ``printPascal(n);``    ``}``}`

Output

```    1
1 1
1 2 1
1 3 3 1 ```

Time Complexity: O(N2)

Auxiliary space: O(1) as it is using constant space for variables

My Personal Notes arrow_drop_up