SICP問題1.12
Pascal三角形の要素を計算する手続き
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
上から n 段, 左から k 番目の要素を計算する感じで。
※ 1段目の要素数は1, 2段目の要素数は 2, 3段目の要素数は3,...
k = 1, k = n の場合 要素は1
f(n, k) = f(n - 1, k - 1) + f(n - 1, k)
f(n, k) で (k <= 1) または (n <= k) の場合は 0
(define (pascal-triangle n k) (if (or (<= k 1) (<= n k)) 1 (+ (pascal-triangle (- n 1) (- k 1)) (pascal-triangle (- n 1) k))) )
- 作者: 結城浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2005/03/24
- メディア: 大型本
- 購入: 41人 クリック: 707回
- この商品を含むブログ (387件) を見る
(define (fact n) ; 階乗 (if (= n 0) 1 (* n (fact (- n 1)))) ) (define (P n k) ; 順列 (if (<= n k) (fact n) (/ (fact n) (fact (- n k)))) ) ; これが pascal-triangleと同じになる (define (C n k) ; 組み合わせ (/ (P n k) (P k k)))