楊輝三角(Pascal三角)java實現的兩種方式

直接代碼走起:數組

 

/**
 * 巴斯卡(Pascal)三角形(楊輝三角)
 * @author idea-pcfff
 *
 */
public class Pascal {
    /**
     * 運用公式,迭代計算
     * nCr = [(n-r+1)*nCr-1]/r
       nC0 = 1
     * @param n 行row 
     * @param r 列 column
     * @return 值
     */
    private static long combi(int n, int r){
        int i;
        long p = 1;
        for(i = 1; i <= r; i++){
            p = p * (n-i+1) / i;
        }
        return p;
        }
    public static void draw(final int N){
        int n, r, t;
        StringBuffer sb = null;
        for(n = 0; n <= N; n++) {
            int count = N*2-n;
            sb = new StringBuffer();
            for(int i = 0;i<count;i++){
                sb.append("  ");
            }
            System.out.print(sb);     
            for(r = 0; r <= n; r++){
                System.out.print( " " + combi(n, r) + " ");
            }
            System.out.println();
            }
    }
    /**
     * 使用二維數組輸出楊輝三角,所有輸出
     * @param arr 輸出指定行列的楊輝三角 ,要求行列相同
     */
    public static void draw(int[][] arr){
        arr[0][0] = 1;
        int n,r ,N= arr.length;
        StringBuffer sb = null;
        for(n=0;n<N;n++){
            int count = N*2-n;
            sb = new StringBuffer();
            for(int i = 0;i<count;i++){
                sb.append("  ");
            }
            System.out.print(sb);     
            for(r=0;r<=n;r++){
                if(r == n || r == 0){
                    arr[n][r] = 1;
                }else{
                    arr[n][r] = arr[n-1][r-1]+arr[n-1][r];
                }
                System.out.print( " " + arr[n][r]  + " ");
            }
            System.out.println();
        }
    }
    public static void main(String[] args) {
        //draw(5);
         int[][] a = new int[10][10];
        draw(a);
    }
}
相關文章
相關標籤/搜索