問題1.17 でいつもどおりわからなくなる
ここまで書いたけど、なぜか無限ループしてしまう。。。
(define (even? n) (= (remainder n 2) 0)) (define (double n) (* n 2)) (define (halve n) (/ n 2)) (define (* b n) (cond ((= n 0) 1) ((even? n) (double (* b (halve n)))) (else (* b (* b (- n 1)))))) (* 5 3)
しょうがないので回答を調べてながら
修正してみる
参考:http://www.serendip.ws/archives/373
(define (even? n) (= (remainder n 2) 0)) (define (double n) (+ n n)) ;←ここがダメだった (define (halve n) (/ n 2)) (define (* b n) (cond ((= n 0) 0) ((even? n) (* (double b) (halve n))) ;←ここもだめだった (else (+ b (* b (- n 1))))));←ここもね (require (lib "trace.ss")) (trace *) (* 5 4)
何とか動きました。。。orz