計算機プログラムの構造と解釈(SICP)学習メモ
蒋 いつ峰 2008/07/06   |  プログラミング基礎
第一章 練習1.12 Pascal三角形 2008/07/06  |  PK:SICP 練習 1.12

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三角形を求めてください。


解答

 
  1. /** 
  2.  * 練習1.12。 
  3.  * 再帰法でPascal三角形を求める。 
  4.  */  
  5.   
  6. import std.stdio;  
  7.   
  8. void pascal(int row) {  
  9.     for (int i = 0; i < row; i++) {  
  10.         for (int j = 0; j <= i; j++) {  
  11.             int value = node(i, j);  
  12.             writef("%d ", value);   
  13.         }  
  14.         writefln();  
  15.     }  
  16. }  
  17.   
  18. int node(int row, int col) {  
  19.     if (col == 0 || col == row) {  
  20.         return 1;  
  21.     } else {  
  22.         return node(row - 1, col - 1) + node(row - 1, col);  
  23.     }  
  24. }  
  25.   
  26. void main() {  
  27.     int n = 6;  
  28.     pascal(n);  
  29. }  

実行結果

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

 


閲覧  |  コメント  |  目次

 
ヘルプ  |  ご利用規約  |  相互リンク  |  問合せ
リンクはご自由に、問合せはお気軽に
©2007 Uprush