ホームページ > ウェブフロントエンド > フロントエンドQ&A > JavaScriptにおける再帰アルゴリズムの実装方法とは

JavaScriptにおける再帰アルゴリズムの実装方法とは

PHPz
リリース: 2023-04-21 16:22:59
オリジナル
647 人が閲覧しました

再帰アルゴリズムは一般的なアルゴリズムのアイデアであり、再帰関数の呼び出しを通じて問題を分解して解決できます。 JavaScript では、再帰関数の実装は非常に簡単で、関数呼び出しの順序と終了条件に注意するだけで済みます。

次に、JavaScript での再帰アルゴリズムの実装方法を例を挙げて紹介します。

例 1: フィボナッチ数列の n 番目の項の値を求める

フィボナッチ数列は、0、1、1、2、3、5、8、13、21、を参照します。 34, ... つまり、最初の項目は 0、2 番目の項目は 1、後続の各項目は前の 2 つの項目の合計です。以下では、再帰アルゴリズムを使用して、フィボナッチ数列の n 番目の項目の値を見つけます。

function fibonacci(n) {
  if(n <= 1) {
    return n;
  } else {
    return fibonacci(n-1) + fibonacci(n-2);
  }
}
ログイン後にコピー

上記のコードでは、まず n が 1 か 0 かを判断します。そうであれば、n 自体を出口として返します。再帰条件。 n が 1 または 0 ではない場合、問題を最初の 2 つの項目の合計を解くように分解し、終了条件に達するまで独自の関数を再帰的に呼び出します。

例 2: ハノイの塔問題

ハノイの塔問題は古典的な再帰問題であり、この問題は次のように説明されます: 3 本の柱があり、いくつかのサイズが配置されます異なるディスクのうち、一番下のディスクが最も大きく、他のディスクは順番に小さくなります。次に、これらのディスクを別の柱に移動する必要があります。移動中は、小さなディスクを大きなディスクの上の 1 つの柱に配置する必要があり、一度に移動できるディスクは 1 つだけです。そこでお聞きしたいのですが、移動条件が整った場合、全ての円盤を別の柱に移動するには何回移動する必要がありますか?

ハノイの塔問題の再帰アルゴリズムの実装は次のとおりです:

function hannuo(n, A, B, C) {
  if(n === 1) {
    console.log(`将第${n}个圆盘从${A}移动到${C}`);
  } else {
    hannuo(n-1, A, C, B);
    console.log(`将第${n}个圆盘从${A}移动到${C}`);
    hannuo(n-1, B, A, C);
  }
}
ログイン後にコピー

このうち、n はディスクの数を表し、A、B、C はそれぞれ 3 つの柱を表します。再帰関数 hannuo の機能は、n 個のディスクを A の底部から C の底部まで移動することであり、B の底部は中間で使用する必要があります。再帰プロセス中に、より小さい問題を継続的に解決する必要があります。再帰が最小の問題、つまり最初のディスクを A から C の一番下に移動するまで、サブ問題を繰り返します。最終結果は、hannuo(n, 'A', 'B', 'C') を呼び出して、移動ステップを解決して出力します。

再帰アルゴリズムは、いくつかの複雑な問題を解決するのに役立ちますが、無限再帰を避けるように注意する必要があるため、コードを記述するときは注意が必要です。

以上がJavaScriptにおける再帰アルゴリズムの実装方法とはの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート