pascal三角形以1开头和结尾

时间:2014-02-22 12:54:47

标签: java

下面粘贴的是一个打印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

1 个答案:

答案 0 :(得分:2)

您可以使用Combination轻松计算它。

Here's an image showing that approach visually

您可以将组合计算为:

|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("");
}