蓝桥杯赛前基础练习。
http://lx.lanqiao.cn/problem.page?gpid=T10
问题描述 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。 下面给出了杨辉三角形的前4行:
1
1 1
1 2 1
1 3 3 1
给出n,输出它的前n行。
直接给出代码吧,主要思路就是用二维数组来装系数,i行0列全都为1,其它部分为a[i][j]=a[i-1][j-1] + a[i-1][j];
非递归代码:
public static void printYangHuiTriangle(int n){
int[][] a = new int[n][n];//初始化元素值为0
a[0][0] = 1;
for(int i=0;i<n;i++){
for(int j=0;j<i+1;j++){
if(j==0){
a[i][j] = 1;
}else{
a[i][j]=a[i-1][j-1] + a[i-1][j];
}
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}
递归代码:
//递归
static int[][] num;
public static void printYangHuiTriangleII(int i,int n){
if(i>=n){
return;
}
for(int j=0;j<=i;j++){
if(j==0){
num[i][j] = 1;
}else{
num[i][j] = num[i-1][j] + num[i-1][j-1];
}
System.out.print(num[i][j]+" ");
}
System.out.println();
printYangHuiTriangleII(i+1,n);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
// printYangHuiTriangle(sc.nextInt());
int n = sc.nextInt();
num = new int[n][n];
printYangHuiTriangleII(0,n);
sc.close();
}
感觉用二维数组装那么多0也不太好,或许可以只用一维数组就能计算出来,改天试试。