練習問題7.3

public class PascalsTriangle {
	private int pascal[][];
	public PascalsTriangle(int num) {
		pascal = new int[num][];
		for(int i=0,j=0;i<pascal.length;i++){
			pascal[i] = new int[i+1];
			pascal[i][j]=1;
			pascal[i][i]=1;
		}
		calc();
	}
	public int[][] calc(){
		for(int j=2;j<pascal.length;j++)
			for(int i=1;i<pascal[j].length-1;i++)
				pascal[j][i]=pascal[j-1][i-1]+pascal[j][i-1];
		return pascal;
	}
	public void show(){
		for (int[] array : pascal) {
			for (int i : array)
				System.out.printf(" %d ", i);
			System.out.println();
		}
	}
	
	public static void main(String[] args) {
		PascalsTriangle pt = new PascalsTriangle(12);
		pt.show();
	}
}

実行結果

1
1 1
1 2 1
1 2 4 1
1 2 4 8 1
1 2 4 8 16 1
1 2 4 8 16 32 1
1 2 4 8 16 32 64 1
1 2 4 8 16 32 64 128 1
1 2 4 8 16 32 64 128 256 1
1 2 4 8 16 32 64 128 256 512 1
1 2 4 8 16 32 64 128 256 512 1024 1

パスカルの三角形。学校で習った気がするけどどんなのだったか思い出せずwikipediaで調べる。うーん、面白いなぁ。