+5

Blog#84: JavaScriptでの再帰パターンへの紹介

image.png

この記事の主な目的は、日本語レベルを上げるのを手伝うことです。ソフトウェア開発に関連する概念や知識なとを紹介するために簡単な日本語を使います。ITの知識に関しては、インターネット上でもっとよく説明されているかもしれませんが、この記事の主な目標はまだ日本語を学ぶことです。


こんにちは、私はトゥアンと申します。東京からフルスタックWeb開発者です。 将来の有用で面白い記事を見逃さないように、私のブログをフォローしてください。

プログラミングでは、再帰は関数がそれ自身を呼び出すことを指します。これは、小さな似たような問題に分割できる問題を解決するために有用です。問題を小さな部分に分割するプロセスは「分割統治」と呼ばれます。

次に、JavaScriptで再帰パターンを使用して解決できる5つの例を示します。

数値の階乗を計算する

数値の階乗は、その数値から1までの数値の積です。例えば、5の階乗(5!と書かれます)は1 * 2 * 3 * 4 * 5 = 120です。次に、数値の階乗を計算する再帰関数を示します。

function factorial(n) {
  if (n === 1) return 1;
  return n * factorial(n - 1);
}

配列をフラット化する

時々、要素として他の配列を含む配列があるかもしれません。再帰を使用して、その配列をフラット化し、すべての要素を単一レベルで持つ新しい配列を返すことができます。次に、配列をフラット化する再帰関数を示します。

function flattenArray(arr) {
  let flatArray = [];
  for (let i = 0; i < arr.length; i++) {
    if (Array.isArray(arr[i])) {
      flatArray = flatArray.concat(flattenArray(arr[i]));
    } else {
      flatArray.push(arr[i]);
    }
  }
  return flatArray;
}

配列内の要素を検索する

配列内の再帰を使用して、配列内の要素を検索することができます。見つかった場合はそのインデックスを返し、見つからなかった場合は-1を返す再帰関数を次に示します。

function findElement(arr, element) {
  if (arr.length === 0) return -1;
  if (arr[0] === element) return 0;
  let index = findElement(arr.slice(1), element);
  if (index === -1) return -1;
  return index + 1;
}

文字列を逆順にする

文字列を小さな文字列に分割し、逆順に結合することで、再帰を使用して文字列を逆順にすることができます。次に、文字列を逆順にする再帰関数を示します。

function reverseString(str) {
  if (str.length === 0) return "";
  return reverseString(str.slice(1)) + str[0];
}

フィボナッチ数列を生成する

フィボナッチ数列は、通常01で始まる、各数が前の2つの数の合計である数列です。再帰を使用して、フィボナッチ数列を生成することができます。次に、フィボナッチ数列を生成する再帰関数を示します。

function fibonacci(n) {
  if (n <= 1) return n;
  return fibonacci(n - 1) + fibonacci(n - 2);
}

結論

再帰パターンは、プログラミングで問題を解決するための強力なテクニックです。問題を小さな似たような問題に分割し、再帰的に解決することができます。この記事では、再帰パターンを使用して解決できる5つの例を見ました。再帰パターンを理解し、マスターすることで、より効果的で効率的なプログラマーになることができます。

最後

いつもお世話になっています。この記事を楽しんで、新しいことを学べたら嬉しいです。

次の記事でお会いしましょう!この記事が気に入ったら、私を応援するために「いいね!」を押して登録してください。ありがとうございました。


この記事の主な目的は、日本語レベルを上げるのを手伝うことです。ソフトウェア開発に関連する概念や知識なとを紹介するために簡単な日本語を使います。ITの知識に関しては、インターネット上でもっとよく説明されているかもしれませんが、この記事の主な目標はまだ日本語を学ぶことです。

参考


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.