简要概述:每一个元素是其上面和左上的元素之和。
形如:
1
1 1
1 2 1
1 3 3 1
.....
代码实现:
import java.util.Scanner;
public class Test {
// 方式1:使用二维数组
public static void printYang1(int n) {
int[][] a = new int[n][n];
a[0][0] = 1;
System.out.println(a[0][0]);
for (int r = 1; r < n; r++) {
a[r][0] = 1;
System.out.print(a[r][0]);
for (int c = 1; c < n; c++) {
a[r][c] = a[r - 1][c - 1] + a[r - 1][c];
if (a[r][c] != 0)
System.out.print(" " + a[r][c]);
}
System.out.println();
}
}
// 方式2:使用一维数组
public static void printYang2(int n) {
int[] a = new int[n];
System.out.println(1);
for (int i = 1; i < n; i++) {
a[0] = a[i] = 1;
for (int j = i - 1; j > 0; j--) {
a[j] = a[j] + a[j - 1];
}
System.out.print(a[0]);
for (int t = 1; t <= i; t++)
System.out.print(" " + a[t]);
System.out.println();
}
}
public static void main(String[] args) {
System.out.print(" 请输入要打印的行数:");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
printYang1(n);
printYang2(n);
}
}
/**
* 使用一维的基本思想:
* 1 因为不必保持所有信息,所以可以使用一维数组
* 2 进行递推,以当前的第n行,来写第n+1行。如同第n次写数组的第0~n-1个元素。
* 3 注意:不要在计算中将未用的数据覆盖,导致有误。
*
*/