Sam pracuję nad SICP, więc nie mam instruktora, który mógłby o to zapytać. Ten kod ma przybliżoną wartość pi, ale zawsze zwraca zero.SICP 1.31: Approximating 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))))
Oto procedury dotyczące modów i produktów, do których odnosi się ten kod. To nie wydaje się być problemem, ale uwzględnię je na wszelki wypadek.
(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)))
Całość jest realizacja wzorze
Pi/4 = (2 * 4 * 4 * 6 ...)/(3 * 3 * 5 * 5 ...)
Mój błąd jest oczywiście czymś dość głupim, ale jestem nowy w Scheme, więc nie mogę go znaleźć. Jeśli ktoś ma jakieś wskazówki stylistyczne, naprawdę to doceniam. Dzięki!
Ach, to był problem. Powinienem był wiedzieć, że to zły znak, kiedy nie używam wszystkich moich formalnych parametrów. Teraz wszystko działa, dzięki! – gregsabo