JavaScript で簡単なメモ化関数コードを記述するにはどうすればよいですか?

PHPz
リリース: 2023-08-25 08:17:02
転載
812 人が閲覧しました

如何用 JavaScript 编写简单的 Memoization 函数代码?

メモリは、機能のパフォーマンスを向上させる最適化テクノロジです。暗記テクニックを始める前に、次の例を使用して、なぜそれが必要なのかを理解しましょう。

例 (フィボナッチ数を見つける簡単な方法)

以下の例では、n 番目のフィボナッチ数を見つける簡単なメソッドを実装します。再帰的方法を使用して n 番目のフィボナッチ数を見つけます。

リーリー

上記の例は、1000 未満の小さな入力値ではうまく機能しますが、範囲 104 の入力値を入力すると、通常より時間がかかり、範囲 10 の場合は通常よりも時間がかかります。 6 を入力すると、メモリの限界外のためブラウザがクラッシュしました。

メモリ テクノロジを使用して上記のコードを最適化すると、以前の計算結果を保存できます。たとえば、4 番目のフィボナッチ数を見つけるには、3 番目と 2 番目のフィボナッチ数を見つける必要があります。同様に、3 番目のフィボナッチ数を見つけるには、2 番目と最初のフィボナッチ数を見つける必要があります。したがって、ここでは 2 番目のフィボナッチ数を 2 回計算します。

ここで、フィボナッチ数列の n 番目に大きい値を見つけたいと仮定すると、それを何回繰り返す必要があるかを考えることができます。したがって、最適化の目的で、2 番目のフィボナッチ数を初めて計算し、それを一時変数に保存できます。後で 2 番目のフィボナッチ数を再度計算する必要がある場合、配列からアクセスできるため、コードがより効率的になります。

さらに、以前に計算した結果を後で使用できるように配列に保存することもメモ化です。

###文法###

ユーザーは次の構文に従って n 番目のフィボナッチ数を記憶できます。

リーリー

上記の構文では、まず n 番目のフィボナッチ数が 'temp' オブジェクトに既に存在するかどうかを確認し、次に値を返します。存在しない場合は、その値を計算し、鉱石を一時オブジェクトに追加します。

###方法###

ステップ 1

– if ステートメントを使用して、n の結果が一時オブジェクトに存在するかどうかを確認します。そうであれば、以前に計算された値が返されます。

ステップ 2 – n が 1 以下の場合、再帰関数の基本ケースとして 1 を返します。

ステップ 3 – n-1 および n-2 フィボナッチ数を計算し、それらを加算し、後で使用できるように一時オブジェクトに保存します。

ステップ 4 – n 番目のフィボナッチ数を保存し、一時オブジェクトに返します。

例 (メモリを使用して n 番目のフィボナッチ数を見つける) メモ化手法を使用して、以下の例の最初の例のコードを最適化しました。 temp オブジェクトを使用して、以前の計算の結果を保存します。出力では、以下のコードが最初の例のコードよりも効率的であることがわかります。

リーリー

方法: 余分なスペースを使用せずにメモリを使用する

ステップ 1

– a を 0 に、b を 1 に初期化します。

ステップ 2 – for ループを n 回繰り返し使用して、n 番目のフィボナッチ数を見つけます。

ステップ 3 – ここで、c は (i-1) 番目のフィボナッチ数を格納する一時変数です。

ステップ 4 – b 変数の値を a に保存します。

ステップ 5 – 変数 c の値を変数 b に保存します。

###例###

次の例も、最初の例の最適化された変形です。 2 番目の例では、一時オブジェクトを使用して前の計算の結果を保存しましたが、以下のコードでは、c という名前の単一の一時変数を使用しています。 以下のコードは、時間計算量が O(n)、空間計算量が O(1) であるため、フィボナッチ数列を見つける最も効率的な方法です。

リーリー

このチュートリアルでは、コードを最適化して時間とスペースをさらに節約するためのメモリ技術について学びました。 2 番目と 3 番目の例では、異なるアルゴリズムを使用して最初の例のコードをどのように最適化したかがわかります。

以上がJavaScript で簡単なメモ化関数コードを記述するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!