📜  打印帕斯卡三角形的Java程序

📅  最后修改于: 2022-05-13 01:55:33.730000             🧑  作者: Mango

打印帕斯卡三角形的Java程序

帕斯卡三角形是基于 nCr 的三角形图案。下面是帕斯卡三角形的图形表示。

例子:

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

方法#1:

nCr 公式:

使用nCr公式后,图形表示变为:

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

算法:

  • 取多行打印,假设为n
  • 使外部迭代 i 从 0 到 n 次以打印行。
  • 对 j 从 0 到 (N – 1) 进行内部迭代。
  • 打印单个空格“”
  • 关闭内循环(j循环)//左间距需要
  • 对 j 从 0 到 i 进行内部迭代。
  • 打印 i 和 j 的 nCr。
  • 关闭内循环。
  • 在每次内部迭代后打印字符(\n)。

下面是上述方法的实现:

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();
        }
    }
}


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);
    }
}


输出
1
     1 1
    1 2 1
   1 3 3 1
  1 4 6 4 1

时间复杂度: O(N 2 )

方法#2:

行号中的第 i 个条目是二项式系数C(line, i)并且所有行都以值 1 开始。想法是使用C(line, i-1)计算C(line, i ) 。

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

以下是给定方法的实现:

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);
    }
}
输出
1 
   1 1 
  1 2 1 
 1 3 3 1 

时间复杂度: O(N 2 )