Hatena::Groupcsnagoya-sicp

toyoshiのSICP宿題帖

 | 

2008-11-09

1.12 パスカルの三角形

00:42 | はてなブックマーク - 1.12 パスカルの三角形 - toyoshiのSICP宿題帖

(define (pascal x y)
  (cond ((= x 1) 1)
	((= x y) 1)
	(else (+ (pascal (- x 1) (- y 1)) (pascal x (- y 1))))))

再帰プロセスって書きはじめると、こんな簡単でいいんだろうかって思う。

今回なら「一個左上と、一個真上を足した数」みたいに文章がそのままコードにできるのが不思議。

1.11

| 23:57 | はてなブックマーク - 1.11 - toyoshiのSICP宿題帖

なぜか動かないけど、こういうこと。

あとから見直す

再帰プロセス

(define (func n) 
	(if (< n 3) 
		n 
		((>= n 3) (+ (func (- n 1)) (* 2 (func (- n 2))) (* 3 (func (- n 3)))))))

反復的プロセス

(define (func n)
	(func-iter 2 1 0 n))

(define (func-iter x-1 x-2 x-3 n)
	(if (= n 0)
		x-3 
		(func-iter ((+ x-1 (* 2 x-2) (* 3 x-3)) x-1 x-2 (- n 1)))))

ゲスト



トラックバック - http://csnagoya-sicp.g.hatena.ne.jp/toyoshi/20081109
 |