Ich arbeite durch SICP auf eigene Faust, so dass ich keinen Lehrer habe, um darüber zu fragen. Dieser Code soll Pi annähern, gibt aber immer null zurück.SICP 1.31: Approximieren Pi
(define (approx-pi acc)
(define (factors a)
(define basic-num
(if (= (mod a 2) 0)
(/ a 2)
(/ (- a 1) 2)))
(if (= (mod basic-num 2) 0)
basic-num
(/ 1 basic-num)))
(* 4 (product factors 5 (* 2 acc))))
Hier sind die Mod- und Produktprozeduren, auf die in diesem Code verwiesen wird. Diese scheinen nicht das Problem zu sein, aber ich werde sie für alle Fälle einschließen.
(define (product func lo hi)
(define (product-iter i result)
(if (> i hi)
result
(product-iter (+ 1 i) (* result (func i)))))
(product-iter 1 1))
(define (mod a b)
(if (< (- a b) 0)
a
(mod (- a b) b)))
Das Ganze ist eine Implementierung der Formel:
pi/4 = (2 * 4 * 4 * 6 ...)/(3 * 3 * 5 * 5 ...)
Mein Fehler ist offensichtlich etwas ziemlich dumm, aber ich bin neu in Scheme, so dass ich es nicht finden kann. Wenn jemand irgendwelche stilistischen Tipps hat, würde ich das auch sehr schätzen. Vielen Dank!
Ah, das war das Problem genau. Ich hätte wissen müssen, dass es ein schlechtes Zeichen ist, wenn ich nicht alle meine formalen Parameter verwende. Jetzt funktioniert alles, danke! – gregsabo