次の数のパターンをPascal三角形(Pascal's triangle)という.
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 ...三角形の辺上の数はすべて1, 三角形の内部の数はその上の二つの数の和である. 再帰的プロセスの方法でPascal三角形の要素を計算する手続きを書け.
Pascal三角形を計算する手続きを定義します.
結果の確認を容易にするための手続きも定義します.
(define (pascal x y) (cond ((= x 0) 1) ((= y 0) 1) ((= x y) 1) (else (+ (pascal (- x 1) (- y 1)) (pascal (- x 1) y))))) ;; 1からnまでの整数のリストを求める. (define (int-list n) (define (loop result counter) (if (< counter 0) result (loop (cons counter result) (- counter 1)))) (loop '() n)) ;; 9行分のPascal三角形を求める. (map (lambda (x) (map (lambda (y) (pascal x y)) (int-list x))) (int-list 8))
実行した結果は次のとおりです.
ようこそ DrRacket, バージョン 6.1 [3m]. 言語: Pretty Big; memory limit: 2048 MB. ((1) (1 1) (1 2 1) (1 3 3 1) (1 4 6 4 1) (1 5 10 10 5 1) (1 6 15 20 15 6 1) (1 7 21 35 35 21 7 1) (1 8 28 56 70 56 28 8 1)) >
Pascal三角形を計算できていることを確認できます.
0 件のコメント:
コメントを投稿