ich diesen Code geschrieben haben, die weitere Bruchentwicklung einer rationalen Zahl berechnen N die euklidische Algorithmus:Python 2.7 - Kettenbruch Expansion - Das Verständnis der Fehler
from __future__ import division
def contFract(N):
while True:
yield N//1
f = N - (N//1)
if f == 0:
break
N = 1/f
Wenn sagen N 3.245 ist die Funktion nie als scheinbar endet f nie 0. die ersten 10 Glieder der Entwicklung gleich ist:
[3.0, 4.0, 12.0, 3.0, 1.0, 247.777.268.231,0, 4,0, 1,0, 2,0, 1,0]
die eindeutig ein Fehler, da die tatsächliche Erweiterung ist nur:
[3; 4,12,3,1] oder [3; 4,12,4]
Was das verursacht hat Problem hier? Ist das ein Rundungsfehler?
Ich verstehe nicht, was Sie bleiben, 'N // 1 'ist nicht gleichbedeutend mit' N' dh 3.223 // 1 = 3. – ggordon
Wieder sehe ich nicht, Ihren Standpunkt, ich, wenn benutze 'int (N)' anstelle von 'N // 1' Ich erhalte den gleichen Fehler. Mit 'N = 1/f 'versuche ich den reziproken Wert von f zu erhalten, verwende keine Division. Wenn ich 1/f für die ersten 10 Erweiterungen drucke, bekomme ich: '4.08163265306 12.25 4.0 1.0 2.47777268231e + 11 4,73320814676 1,36386918834 2,74824038982 1,33646888567 2.97204301075' – ggordon
Ah, ok ich sehe Ihren Punkt jetzt, had't noch Änderungen an Ihrem Beitrag gesehen – ggordon