一、首先来看杨辉三角是什么?
等边三角形的杨辉三角:
直角三角形的杨辉三角:
二、杨辉三角的规律
以直角形的杨辉三角来看,第一行是一个1,从第二行开始,第一个和最后一个都是1,两个1之间的数 = 上一行同列的数 + 左上角的数。
三、两种思路实现
(一)用二维数组实现
public class test{
public static void main(String[] args){
int ROW = 10; //行数
int COL = 10; //列数
int arr[][] = new int[ROW][COL];
int i = 0, j = 0;
//第一列都是1
for (i = 0; i < ROW; i++)
{
arr[i][0] = 1;
}
for(i = 1; i < ROW; i++)
{
for(j = 1; j <= i; j++)
{
arr[i][j] = arr[i-1][j] + arr[i-1][j-1];//从第二行第二列开始
}
}
//打印
for(i = 0; i < ROW; i++)
{
for(j = 0; j <= i; j++) //用j<=i,不用j<COL,为了就是不打印斜对角线以上的数,他们都是0
{
System.out.printf("%-4d",arr[i][j]);
}
System.out.println();//换行
}
}
}
(二)用一维数组实现
思路:设置好一行后就打印。
这儿为了方便,加入有一个数组arr,初始化数组之后,数组每个元素都是0,此时令第1个元素为1,即arr[0] = 1,次数将arr[0]打印为第一行。之后令第二个元素 = 第二个元素 + 第一个元素,即arr[1] = arr[1] + arr[0],到现在已经设置好第一个元素和第二,然后打印。现将arr[2] = arr[2] + arr[1],arr[2] = arr[2] + arr[1],又重新设置了前三个元素,直接打印,得到第三行,之后以此内推。
代码实现:
// 杨辉三角
public class test{
public static void main(String[] args){
int ROW = 10;
int arr[] = new int[ROW]; //打印10行
arr[0] = 1;
int i = 0, j = 0;
for(i = 0; i < ROW; i++)
{
for (j = i; j > 0; j--)
{
arr[j] = arr[j] + arr[j-1];
}
for(j = 0; j <= i; j++)
{
System.out.printf("%-4d",arr[j]);
}
System.out.println();//换行
}
}
}