私は 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)
ても結果が得られます。