楊輝三角的打印(Java)

//
//輸入指定的行數,打印楊輝三角
//
//每一個數等於它上方兩數之和。
//每行數字左右對稱,由1開始逐漸變大。
//第n行的數字有n項。
//
//
//
//可從打印菱形的思想出發:?????

// 存在問題: 隨着行數的增長,數字增大,佔用空間增大,慢慢變得不「對稱」。
package com.day16;
import java.util.Scanner;
public class testYangHuiSanJiao{
    public static Scanner Sc =new Scanner(System.in);
    
    
    //初始化行數組,是每一行數組第一元素爲1;
    public static int[][] inital(int [][] ary){
        
        for( int i=0;i<=ary.length-1;++i){
            
            ary [i] = new int [i+1];  //每行元素個數本等於行數i,
                                      //但注意到 數組是從 0 開始的,故行數組初始化爲[i+1]的大小
            ary[i][0]=1;//首元素初始化爲1;   
            ary[i][i]=1; //末元素初始化爲1;
        }
                
        int row,colum;
        for(row = 2;row <= ary.length-1;row++){  //前兩行初始化已完成,從第三行開始
            for(colum = 1;colum < row;colum++){  //每一行數組第一個元素(下標爲0)已初始化爲1,
                                                 //從第二個元素(下標爲1)開始
                                                 //末元素已初始化爲1,故column < row ;
                
                ary[row][colum]=ary[row-1][colum-1]+ary[row-1][colum];
                
            }
        }
        
        
//        //Check row ary[][]
//        
//        for(int i = 0; i<=ary.length-1;i++){
//            for(int j = 0; j<=i;j++){  //初始化大小決定   j<=i
//                System.out.print(ary[i][j]+" ");
//            }
//            System.out.println();
//                
//        }
//        //測試經過,初始化正確;
        
        
        return ary;
        
    }
    
    public static void prtyhsj (int [][] ary){
        
        int cbkn= ary.length-0 ;
        for(int row = 0;row <= ary.length-1;row++){
            //每行首先打印相應的空格;
            for(int i = cbkn ; i > 0;i--){
                System.out.print(" ");
            }
            //在打印相應行數組的元素+空格;
            for(int col = 0;col <= row; col++){
                System.out.print(ary[row][col]);
                System.out.print(" ");
            }
            //打印後續對稱連續空格
            for(int i = cbkn;i > 0;i--){
                System.out.print(" ");
            }
            cbkn--;
            
            System.out.println();//一行打印結束執行換行
        }
        
        
        
        
        
    }
    public static void main (String [] args){
        System.out.println("Please input row:");
        int rownum = Sc.nextInt();
        System.out.println("Printing "+rownum+" row YHSJ");
        
        //定義二維數組,第一維爲行數組,並初始化
        int [][] rowary = new int [rownum][] ;
        
        inital(rowary);
        prtyhsj(rowary);
            
                
    }
}
相關文章
相關標籤/搜索