blog

JavaScriptのアルゴリズム - 再帰

なぜ再帰をアルゴリズムの最初の章にしたかというと、その後のソートなどのアルゴリズムでは、再帰の応用はどこにでもあると言えるので、最前線に置いて語っているからです。 基本的なことを少し知っていれば、関数...

Mar 1, 2020 · 1 min. read
シェア

序文

再帰がアルゴリズムの章の最初にあるのは、ソートなどの後続のアルゴリズムでいたるところで使われているため、リストの一番上にあるからです。

再帰的

基本的なことを少し知っている人なら、 関数やメソッドが自分自身を呼び出すことを再帰と呼ぶことを知っているはずです。

では、再帰はどのような問題に適用されるのでしょうか?

  • データが異なることを除けば、この問題と部分問題はまったく同じ方法で解かれます。
  • 再帰的終了条件の存在
  • この問題の解は、いくつかの部分問題の解に分解することができます。

該当するシナリオを知った上で、再帰の利点と欠点を教えてください。

長所 :シンプルで理解しやすいコード

デメリット: スペースの複雑さ、スタックオーバーフローの危険性、重複計算、関数呼び出しの多さによる時間やその他のパフォーマンスの問題。

覚えておこう! 問題を解決するために再帰を使用する場合、再帰プロセスの各ステップを理解しようとしないこと。
再帰コードを理解し、再帰式に抽象化され、呼び出し関係のレイヤーを考える必要がない。
問題をいくつかのサブ問題に分解するだけで、問題とサブ問題の間の関係を考える必要があり、再帰式に抽象化し、呼び出し関係の層を考える必要はないことができる。
Read next

アンチシェイクとスロットリングの実装

1. ディザリング 2. スロットリング 高頻度のイベントがトリガーされますが、n秒に1回しか実行されないため、スロットリングによって関数の実行頻度が薄まります。アンチディザリングとの違いは、各関数呼び出しが最後に実行されるのに対し、アンチディザリングは最後にしか実行されないことです。

Mar 1, 2020 · 1 min read