exercise 1.12 - Pascalの三角形
パスカルの三角形の問題ですが、
(リストとかはまだ出てきていないので)指定した要素の値を求めよという解釈をして解く。
レベル(上から何番目)と列(左から何番目)を引数に指定しての定義。
左上(1つ下のレベルの同じ列)と右上(1つ上のレベルの1つ右の列)を足したものが、その要素の値なので、
その左上と右上を足すという操作を再帰させればよいということで以下のとおりかな。
(condで指定している条件がいい加減だが...)
(define (pascal-triangle level n ) (cond ((= n 1) 1) ; 左の辺 ((= n level) 1) ; 右の辺 ((= n 0) 0) ; ((= level 0) 0) ; (else (+ (pascal-triangle (- level 1) n ) (pascal-triangle (- level 1) (- n 1))))))
実行例..
gosh> (pascal-triangle 10 3) 36 gosh> (pascal-triangle 11 4) 120