哈斯卡三角形

哈斯卡三角形 计算每一元素的公式
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(); } } }
浙公网安备 33010602011771号