哈斯卡三角形

哈斯卡三角形 计算每一元素的公式

rC0 = 1
rCn = rCn-1 * (r - n + 1) / n

public class PascalTriangle {

    /**
     * 使用hashmap计算哈斯卡三角形
     * 下一行的第i个元素的值等于上一行的第i-1个元素与第i个元素值的和
     * @param n
     */
    public void calulateTriangle(int n) {
        HashMap<Integer, int[]> triangle = new HashMap<Integer, int[]>();
        for (int i = 0; i < n; i++) {
            int tmp[] = new int[i + 1];
            for (int j = 0; j <= i; j++) {
                // 如果该行元素是第一个或者最后一个,那么它的值为1
                if (j == 0 || j == i )
                    tmp[j] = 1;
                //下一行的第i个元素的值等于上一行的第i-1个元素与第i个元素值得和
                else {
                    int tmp1[] = triangle.get(i - 1);
                    tmp[j] = tmp1[j - 1] + tmp1[j];
                }
                System.out.print(tmp[j]+"  ");
            }
            triangle.put(i, tmp);
            System.out.println();
        }

    }
    /**
     * 哈斯卡三角形公式
     * rC0 = 1
     * rCn = rCn-1 * (r - n + 1) / n
     * @param n 列数
     * @param r 行数
     * @return
     */
    public long calculateTriangle1(int n , int r){
        int p = 1;
        for(int i = 1 ; i <= n; i ++)
            p = p * (r - i + 1) / i;
        return p;
        
    }
    public static void main(String args[]){
        PascalTriangle triangle = new PascalTriangle();
        //triangle.calulateTriangle(13);
        
        for(int N = 1; N <=12 ; N ++){
            for( int n = 1 ; n <=N ; n ++){
                System.out.print(triangle.calculateTriangle1(n, N) + " ");
            }
            System.out.println();
        }
        
    }
}

 

 

posted on 2013-01-05 11:34  JoshuaZhu  阅读(77)  评论(0)    收藏  举报

导航