下面粘贴的是一个打印Pascal三角形的程序。计算任何给定位置值的方法是将数字加到前一行中左右两侧的位置。例如,要计算第三行中的中间数,可以添加1和1.三角形的边总是1,因为您只将数字添加到左上角或右上角(另一个没有第二个数字)侧)。
int pascal[][]=new int[50][50]; int j;
for(int i=0;i<m;i++)
{
pascal[i][i]=1;
for(j=1;j<i;j++)
{
pascal[i][j]=pascal[i-1][j-1]+pascal[i-1][j];
}
for(int n=1;n<=m-i;n++)
{
System.out.print(" ");
}
for(int k=1;k<=i;k++)
{
System.out.print(pascal[i][k]);
System.out.print(" ");
}
System.out.println(" ");
}
有没有办法在不使用数组的情况下完成此操作?
我在没有数组的情况下尝试这种组合:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
答案 0 :(得分:2)
您可以使用Combination轻松计算它。
您可以将组合计算为:
|n| = (n!) / ((n-k)!*k!)
|k|
因此,如果你想打印上面的图像,你将从:
开始int size = 5;
for(int i = 0; i < size; i++){
for(int k = 0; k < (size - i)/2; k++)
System.out.print(" "); // print the intendation
for(int j = 0; j <= i; j++){
System.out.print(combination(i,j));
}
System.out.println("");
}