Frage

Beim Lesen durch mehr SICP und ich bin fest auf Übung 1.3.8 . Mein Code funktioniert zum Annähern 1 / phi, aber nicht funktioniert zur Annäherung e -. 2

(define (cont-frac n d k)
  (define (frac n d k)
        (if (= k 0)
            1.0
            (+ (d k) (/ (n (+ k 1)) (frac n d (- k 1))))))
    (/ (n 1) (frac n d k)))

(define (eulers-e-2)
  (cont-frac (lambda (i) 1.0) 
             (lambda (i)
               (if (= (remainder (+ i 1) 3) 0)
                   (* 2.0 (/ (+ i 1) 3))
                   1.0))
             100))

(define (1-over-phi)
  (cont-frac (lambda (i) 1.0)
             (lambda (i) 1.0)
             100))

Statt sich 0,7 bla bla bla für e-2, ich bin immer 0,5 bla bla etwas. Ich kann nicht herausfinden, warum. Ich bin mir ziemlich sicher, dass ich "d" definiert richtig in der "Eulers-e-2" Funktion haben.

Edit: Danke Jungs, ich war es rückwärts zu berechnen. Hier ist der festgelegte Code.

(define (cont-frac n d k)
  (define (frac n d i)
        (if (= k i)
            (d i)
            (+ (d i) (/ (n (+ i 1)) (frac n d (+ i 1))))))
    (/ (n 1) (frac n d 1)))
War es hilfreich?

Lösung

Sie scheinen die folgenden zu Berechnung:

N1/(D100 + (N101/ D99 + N100/(D98 + N99/(..))))

Anstelle von

N1/(D1 + N2/(D2 + ...))

Da N und D die gleichen sind (alle 1 s) für 1 / phi, erhalten Sie die richtige Antwort gibt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top