+6

JavaScriptでの再帰パターンへの紹介

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

次に、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つの例を見ました。再帰パターンを理解し、マスターすることで、より効果的で効率的なプログラマーになることができます。

Mình hy vọng bạn thích bài viết này và học thêm được điều gì đó mới.

Donate mình một ly cafe hoặc 1 cây bút bi để mình có thêm động lực cho ra nhiều bài viết hay và chất lượng hơn trong tương lai nhé. À mà nếu bạn có bất kỳ câu hỏi nào thì đừng ngại comment hoặc liên hệ mình qua: Zalo - 0374226770 hoặc Facebook. Mình xin cảm ơn.

Momo: NGUYỄN ANH TUẤN - 0374226770

TPBank: NGUYỄN ANH TUẤN - 0374226770 (hoặc 01681423001)

image.png


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí