Estoy trabajando con el SICP solo, por lo que no tengo un instructor que me pregunte sobre esto. Se supone que este código se aproxima a pi, pero siempre devuelve cero en su lugar.SICP 1.31: Aprox. 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))))
A continuación, se detallan los procedimientos de mod y producto a los que se hace referencia en este código. Estos no parecen ser el problema, pero los incluiré por si acaso.
(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)))
Todo esto es una implementación de la fórmula:
pi/4 = (2 * 4 * 4 * 6 ...)/(3 * 3 * 5 * 5 ...)
Mi error es, obviamente, algo bastante estúpido, pero soy nuevo en Scheme, así que no puedo encontrarlo. Si alguien tiene algún consejo estilístico, realmente lo apreciaría también. ¡Gracias!
Ah, ese era el problema exactamente. Debería haber sabido que es una mala señal cuando no uso todos mis parámetros formales. Ahora todo funciona, gracias! – gregsabo