エラーを理解し、私は有理数の連分数展開を計算するためにこのコードを書かNユークリッドアルゴリズムを使用してきました:のPython 2.7 - 連分数展開 -
from __future__ import division
def contFract(N):
while True:
yield N//1
f = N - (N//1)
if f == 0:
break
N = 1/f
場合は、Nが3.245関数であると言います
:膨張0最初の10件の用語であり等しく決してFと明らかに終わることはありません実際の展開だけであるので、明らかに誤りである[3.0、4.0、12.0、3.0、1.0、247777268231.0、4.0、1.0、2.0、1.0]
:
[3; 4,12,3,1]または[3; 4,12,4]引き起こして何
ここの問題?何らかの丸め誤差ですか?
私はあなたが私があればNは1 'は、' N 'すなわち3.223 // 1 = 3 – ggordon
再び私は見ていないあなたのポイントと等価ではない// '、滞在しているか理解していません'N // 1'の代わりに' int(N) 'を使うと同じエラーが出ます。 'N = 1/f'では、fの逆数を得ようとしています。床分割を使用しません。最初の10回の展開で1/fを印刷すると、 '4.08163265306 12.25 4.0 1.0 2が得られます。47777268231e + 11 4.73320814676 1.36386918834 2.74824038982 1.33646888567 2.97204301075' – ggordon
ああ、私は今、あなたのポイントを参照して[OK]を、had'tはまだ私が代わりに '' N //の 'int型(N)を使用するもので、あなたのポスト – ggordon