最近いくつかのコードを最適化する際に、メモ化の「タイプ」と思われるものを実行することになりましたが、それをそう呼ぶべきかどうかはわかりません。以下の疑似コードは実際のアルゴリズムではありません (アプリケーションで階乗をほとんど必要とせず、そのコードを投稿することは違反であるため)、私の質問を説明するには十分なはずです。これはオリジナルでした:
def factorial (n):
if n == 1 return 1
return n * factorial (n-1)
十分に単純ですが、次のように、より大きな数に対して多数の計算を回避できるように、固定小数点を追加しました。
def factorial (n):
if n == 1 return 1
if n == 10 return 3628800
if n == 20 return 2432902008176640000
if n == 30 return 265252859812191058636308480000000
if n == 40 return 815915283247897734345611269596115894272000000000
# And so on.
return n * factorial (n-1)
もちろん、これは が効率の悪い ではなく12!
として計算されたことを意味します。12 * 11 * 3628800
12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1
しかし、これをメモ化と呼ぶべきかどうかは疑問です。これは、過去の計算結果を記憶して使用することと定義されているようです。これは、ハードコーディングされた計算 (覚えていない) とその情報を使用することに関するものです。
このプロセスに適切な名前はありますか? それとも、メモ化は、実行時に行われる計算だけでなく、コンパイル時に行われる計算にも、コードを書き始める前に頭の中で行われる計算にも及ぶと主張できますか?