|
まるケン |
|
私の環境では 984 が限界で、985 を指定すると「stack level too deep」ってなります。
でも、一回このhashを変数に代入し、小刻みに計算させれば 100000 でも数秒で結果が出ました。 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− # 漸化式を表したhashを作成、変数 ans1183 に代入 ans1183 = Hash.new{|h,k|h[k]=k<3?[1,2,9][k]:h[k-1]*3+h[k-2]*3-h[k-3]} # スタックが溢れない程度(900ずつ)に刻んで、hashを計算(計算するだけで表示はしない) 0.step(100000,900).each do |n| ans1183[n] end # 改めて、100000の値を計算 & 結果表示 r = ans1183[100000] p r # 文字列に変換して桁数表示 p r.to_s.size −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ちなみに最後に表示される桁数は 57195桁。 これくらいになると、今度はメモリ不足でHDアクセスが増え、計算スピードがめちゃくちゃ落ちます。 ま、そりゃそうですね。 |
|
9月13日(月) 10:33:32
50845 |