4

私は 64 ビットの Python 3.3.1、pylab、および 32GB のシステム RAM を使用しています。この機能:

def sqrt2Expansion(limit):
    x    = Symbol('x')
    term = 1+1/x
    for _ in range(limit):
        term = term.subs({x: (2+1/x)})
    return term.subs({x: 2})

次のような式を生成します: 1 + 1/(2 + 1/(2 + 1/(2 + 1/(2 + 1/(2 + 1/(...)))))). 次のように呼び出された場合:sqrt2Expansion(100)有効な結果を返しますが、多くのページのトレースバックをsqrt2Expansion(200)生成し、pylab/IPython インタープリターをハングアップさせ、未使用のシステム メモリを大量に残します。RuntimeErrorそれをより効率的に実装する方法はありますか?電話をかけsqrt2Expansion(1000)ても結果が得られます。

4

2 に答える 2