Pascal三角形は以下の数値パターンです。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
...
Pascalの第 n 行は、(x + y)n の展開式の係数です。
問題
SICPの練習 1.11 です。再帰法でPascal三角形を求めてください。
解答
-
-
-
-
-
- import std.stdio;
-
- void pascal(int row) {
- for (int i = 0; i < row; i++) {
- for (int j = 0; j <= i; j++) {
- int value = node(i, j);
- writef("%d ", value);
- }
- writefln();
- }
- }
-
- int node(int row, int col) {
- if (col == 0 || col == row) {
- return 1;
- } else {
- return node(row - 1, col - 1) + node(row - 1, col);
- }
- }
-
- void main() {
- int n = 6;
- pascal(n);
- }
/** * 練習1.12。 * 再帰法でPascal三角形を求める。 */ import std.stdio; void pascal(int row) { for (int i = 0; i < row; i++) { for (int j = 0; j <= i; j++) { int value = node(i, j); writef("%d ", value); } writefln(); } } int node(int row, int col) { if (col == 0 || col == row) { return 1; } else { return node(row - 1, col - 1) + node(row - 1, col); } } void main() { int n = 6; pascal(n); }
実行結果:
uprush@uprush-dev:~/src/d/sicp$ ./q1_12
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1 |
|