Rubyの学習実験として、Pascalの三角形ジェネレーターの実装をメモしようとしています。私は次の作業コードを持っています:
module PascalMemo
@cache = {}
def PascalMemo::get(r,c)
if @cache[[r,c]].nil? then
if c == 0 || c == r then
@cache[[r,c]] = 1
else
@cache[[r,c]] = PascalMemo::get(r - 1, c) + PascalMemo::get(r - 1, c - 1)
end
end
@cache[[r,c]]
end
end
def pascal_memo (r,c)
PascalMemo::get(r,c)
end
これをもっと簡潔にすることはできますか?具体的には、これよりも簡単にローカルクロージャを使用してグローバルスコープの関数を作成できますか?