JavaScriptで再帰を使って配列内の全要素の積を求める方法
概要
整数の配列を受け取り、その中のすべての要素の積を計算するJavaScript関数を作成する必要があります。この関数には、次の2つの要件が課せられています。
- 再帰的なアプローチを利用すること
- 配列内のすべての要素の積を計算し、その結果を返すこと
具体例
たとえば、入力として次の配列が与えられた場合を見てみましょう。
const arr = [1, 3, 6, .2, 2, 5];このとき、期待される出力は次のとおりです。
const output = 36;実際、1 × 3 × 6 × 0.2 × 2 × 5 = 36 となるため、この結果が正しいことが確認できます。
コード例
この処理を実現するコードは次のとおりです。
const arr = [1, 3, 6, .2, 2, 5];
const arrayProduct = ([front, ...end]) => {
if (front === undefined) {
return 1;
};
return front * arrayProduct(end);
};
console.log(arrayProduct(arr));コードの解説
この関数の仕組みを順番に見ていきましょう。
- 分割代入: 引数の
[front, ...end]により、配列の先頭要素をfrontに、残りの要素を新しい配列endに分割しています。これにより、各再帰呼び出しで配列が1つずつ短くなります。 - 基底ケース: 配列が空になると
frontはundefinedになるため、その時点で1を返します。乗算における単位元として機能し、無限ループを防ぎながら再帰を安全に終了させます。 - 再帰ステップ: 先頭の要素と、残りの配列に対する再帰呼び出しの結果を掛け合わせていくことで、最終的に配列全体の積が求められます。
実行結果
コンソールには次のように出力されます。
36
-
JavaScriptで配列内の最長フィボナッチ部分列を見つける方法
フィボナッチ数列とは 数列 X_1, X_2, ..., X_n がフィボナッチ数列であるとは、以下の条件を満たすことを指します。 n >= 3 である すべての i + 2 <= n に対して、X_i + X_{i+1} = X_{i+2} が成り立つ つまり、隣り合う2項の和が常に次の項になる数列のことです。 問題の概要 数値の配列 arr を第1引数(唯一の引数)として受け取り、配列 arr 内に存在する最長のフィボナッチ部分列の長さを見つけて返すJavaScript関数を作成する必要があります。 ここでいう「部分列」とは、元の配列 arr から任意の個数の要素(0個で
-
JavaScriptで配列内の特定の数値に最も近い2つの要素を検索する方法
問題の概要JavaScriptで、ソート済みの整数配列 arr を第一引数に、目標となる数値 target を第二引数に受け取る関数を作成します。この関数は、配列内に存在する要素の中から target に最も近い2つの数値を選び、それらを昇順に並べた配列として返す必要があります。例えば、以下のような入力が与えられた場合を考えてみましょう。入力:const arr = [1, 2, 3, 4, 5];const target = 3;出力:const output = [2, 3];この場合、target の値が 3 であるため、最も近い2つの要素は 2 と 3 となり、昇順に並べて [2, 3