题目:问题描述
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行:
1
1 1
1 2 1
1 3 3 1
给出n,输出它的前n行
代码如下
// 使用二维数组打印一个 10 行杨辉三角
/* 规律
1.第一行有 1 个元素, 第 n 行有 n 个元素
2. 每一行的第一个元素和最后一个元素都是 1
3. 从第三行开始, 对于非第一个元素和最后一个元素的元素的值. arr[i][j]
arr[i][j] = arr[i-1][j] + arr[i-1][j-1]; //必须找到这个规律
*/
public class YangHui{
public static void main (String[]args){
int[][] yangHui=new int[10][ ];//给二维数组开辟空间
for (int i = 0;i<yangHui.length ;i++ ) {//编历yangHui这个二维数组
yangHui[i]=new int[i+1];//给一维数组开辟空间
// 给每个一维数组赋值
for (int j=0;j<yangHui[i].length ;j++ ) {
//每一行的第一个元素和最后一个元素都是1
if (j==0||j==yangHui[i].length-1) {
yangHui[i][j]=1;
//中间元素
}else{
yangHui[i][j]=yangHui[i-1][j]+yangHui[i-1][j-1];
}
}
}
// 输出杨辉三角
for (int i=0;i<yangHui.length ;i++ ) {//遍历二维数组
for (int j=0; j<yangHui[i].length ;j++ ) {//遍历一维数组
System.out.print(yangHui[i][j]+"\t");//循环输出数组的每一个数
}
System.out.println( );//每遍历一次二维数组输出一维数组的时候切行
}
}
}
效果
这是我的理解,如有问题请提醒我修改哈!