打印帕斯卡三角形的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 公式:
n ! / ( n – r ) ! r !
使用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 )