プログラムに計算式とかせるのがすき6 君のこたえを覚えておきたい
今日はメモ化をしてみようかと思ったんだ。とりあえず、メモ化を分離しないで、関数の中でキャッシュを持っておく形。しかも呼ばれたその時限りのローカルキャッシュ。…フィボナッチ数以外には使えないね。そんなこともないかもしれないけど。
(define (fib4 n) (let ((cache ())) (define (fib n) (cond ((= n 0) 0) ((= n 1) 1) (else (+ (fib (- n 1)) (fib (- n 2)))))) (define (inner-fib n) (if (assoc n cache) (cdr (assoc n cache)) (let ((result (fib n))) (set! cache (append (cons n result))) result))) (inner-fib n)))
ふむ、うまく行っていない。こんどもう少し悩んでみる。