理系学生日記

おまえはいつまで学生気分なのか

忍者TOOLS

問題1-30

sumを再帰的プロセスから反復的プロセスにかきなおしましょう。

(define (sum term a next b)
  (define (iter a result)
    (if (> a b)
	result
	(iter (next a) (+ (term a) result))))
  (iter a 0))

0から100まで足しまくって確認してみる。

gosh> (define (identity x) x)
identity
gosh> (define (inc x) (+ x 1))
inc
gosh> (sum identity 0 inc 100)
5050

なんかいいかんじです。