黑马程序员技术交流社区

标题: 打印杨辉三角的两种方法 [打印本页]

作者: 夜空中最亮的星    时间: 2015-6-26 22:08
标题: 打印杨辉三角的两种方法
杨辉三角:
            1
         1    1
       1   2   1
    1   3    3   1
1    4    6    4    1
方法一:
杨辉三角的性质:
1、每行数字左右对称,由1开始逐渐变大,然后变小,回到1。   
2、第n行的数字个数为n个。  
3、第n行数字和为2^(n-1)。  
4、每个数字等于上一行的左右两个数字之和。
  1. class  Triangle01
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int size = 5;
  6.                 int[][] arr = new int[size][size];
  7.                 for (int i = 0; i < size ; i++ )
  8.                 {
  9.                         for ( int k = i; k < size-1 ; k++ )
  10.                         {
  11.                                 System.out.print(" ");
  12.                         }

  13.                         for (int j = 0; j <= i ; j++ )
  14.                         {
  15.                                 if (j == 0 || j == i)
  16.                                 {
  17.                                         arr[i][j] = 1;
  18.                                         System.out.print(arr[i][j]+" ");
  19.                                 }
  20.                                
  21.                                 if ( i > 1 && j != 0 && i > j )
  22.                                 {
  23.                                         arr[i][j] = arr[i-1][j-1]+arr[i-1][j];
  24.                                         System.out.print(arr[i][j]+" ");
  25.                                        
  26.                                 }
  27.                         }
  28.                         System.out.println();
  29.                 }
  30.         }
  31. }
复制代码

方法二:
与杨辉三角联系最紧密的是二项式乘方展开式的系数规律,即二项式定理
二项式定理的公式为:(a+b)^n=C(n,0)a^n*b^0+C(n,1)a^(n-1)*b^1+...+C(n,r)a^(n-r)*b^r...+C(n,n)a^0*b^n
杨辉三角形同时对应于二项式定理的系数。n次的二项式系数对应杨辉三角形的n + 1行。例如在中,2次的二项式正好对应杨辉三角形第3行系数1 2 1。
  1. class Triangle
  2. {
  3.         public static void main(String[] args)
  4.         {       
  5.                 int size = 5;
  6.                 int[][] arr = new int[size][size];
  7.                 for ( int i = 0; i < size ; i++ )
  8.                 {
  9.                         for ( int k = i; k < size-1 ; k++ )
  10.                         {
  11.                                 System.out.print(" ");
  12.                         }
  13.                         for ( int j = 0; j <= i ; j++ )
  14.                         {
  15.                                 arr[i][j] = ArrShow(i,j);
  16.                                 System.out.print(arr[i][j]+" ");
  17.                         }
  18.                         System.out.println();
  19.                 }
  20.         }
  21.                 public static int ArrShow(int i, int j){
  22.        
  23.                 int value = conbinations(i,j);
  24.                 return value;
  25.         }
  26.         public static int conbinations(int n,int r){//计算二项式系数
  27.                 if (n >= 0 && r>= 0){
  28.                         int x = Permutations(n);
  29.                         int y = Permutations(r);
  30.                         int z = Permutations(n - r);
  31.                         int conb = x / (y * z);
  32.                         return conb;
  33.                 }else{
  34.                         System.out.println("您输入的数字有误");
  35.                 }
  36.                 return 0;
  37.         }
  38.        
  39.         public static int Permutations(int n){//计算全排列
  40.                 int s=1;
  41.                 for (int i = 1; i <= n ; i++)
  42.                 {
  43.                         s *= i;
  44.                 }
  45.                 return s;
  46.         }
  47. }
复制代码





作者: 进军黑马    时间: 2015-6-26 22:13
哦!原来这就是杨辉三角啊!!!赞,学习学习
作者: 空城dream    时间: 2015-6-27 23:18
杨辉三角,好棒。。。
作者: 小糊涂仙    时间: 2015-7-4 17:20
顶顶,快乐分享
作者: 357955778    时间: 2015-7-4 17:34
大神好厉害!
作者: 终极黑马    时间: 2015-7-4 17:39
路过!学习!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2