Je travaille seul sur SICP, donc je n'ai pas d'instructeur à poser à ce sujet. Ce code est supposé approcher pi mais renvoie toujours zéro à la place.SICP 1.31: Approximativement 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))))
Voici les procédures de mod et de produit référencées dans ce code. Ceux-ci ne semblent pas être le problème mais je les inclurai juste au cas où.
(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)))
L'ensemble est une implémentation de la formule:
pi/4 = (2 * 4 * 4 * 6 ...)/(3 * 3 * 5 * 5 ...)
Mon erreur est évidemment quelque chose de plutôt stupide, mais je suis nouveau sur Scheme et je ne le trouve pas. Si quelqu'un a des conseils stylistiques, j'apprécierais vraiment cela aussi. Merci!
Ah, c'était exactement le problème. J'aurais dû savoir que c'est un mauvais signe quand je n'utilise pas tous mes paramètres formels. Maintenant tout fonctionne, merci! – gregsabo