【java】不规则数组实现杨辉三角
参考:java核心技术卷一
构造不规则数组,及每一行长度不同,从而达到杨辉三角的效果。
显示效果:
/*NMAX=10;
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
*/
/*
NMAX=15;
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1
1 13 78 286 7151287171617161287 715 286 78 13 1
1 14 91 3641001200230033432300320021001 364 91 14 1
1 15 105 45513653003500564356435500530031365 455 105 15 1
*/
关键代码:
int NMAX=10;//定义要打印的三角的行数,这里先默认为10行
int[][] odds = new int [NMAX+1][];//要打印10行,那么我们的数组长度应该为行数+1 及NMAX+1
//分配行数(每一行元素具体个数)
for(int n=0;n<=NMAX;n++){
odds[n] = new int[n+1];//每一行定义n个元素 那么每一行的长度即为元素数+1
}
//分配元素
for(int n=0;n<odds.length;n++){
for(int k=0;k<odds[n].length;k++){
int lotteryOdds = 1;
for(int i=1;i<=k;i++){
lotteryOdds = lotteryOdds * (n-i+1)/i;//杨辉三角公式
}
odds[n][k] = lotteryOdds;
}
}
完整代码:
public class LotteryArray {
public static void main(String[] args){
final int NMAX=10;
int[][] odds = new int[NMAX+1][];
for(int n=0;n<=NMAX;n++){
odds[n]=new int[n+1];
}
for(int n=0;n< odds.length;n++){
for(int k=0; k<odds[n].length;k++){
int lotteryOdds = 1;
for(int i=1;i<=k;i++){
lotteryOdds = lotteryOdds*(n-i+1)/i;
}
odds[n][k] = lotteryOdds;
}
}
for(int[] row:odds){
for(int odd:row){
System.out.printf("%4d",odd);
}
System.out.println();
}
}
}