returnを使用した計算について
5.times do
def a
x = rand(1..10).to_f
p "x = " << x.to_s
return @a_result if @a_result
@a_result = (40 + 20 + 34) / x
end
def b
return @b_result if @b_result
@b_result = a * 2
end
def c
return @c_result if @c_result
@c_result = b.to_f / 2
end
p a, b, c
end
上記のようなコードでaとbを計算した場合、5回とも同じ値になってしまいます。
return @~ が繰り返しで同じ値になってしまうのが問題なのは分かるのですがどのようにしたら良いのか分からず困っています。
上の計算くらいであれば良いのですが、もっと複雑なものになると時間が掛かるので、できる限り速く計算したいため a,b を一度求めたらその値をそのまま使い、1巡したらa,b,cの値をリセットしたいのですが、何か良い方法はあるのでしょうか。
説明が下手で申し訳ありませんが教えて頂けるとありがたいです。
よろしくお願いします。