JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptの再帰関数で配列の要素数を数える方法【サンプルコード付き】

再帰関数とは、特定の基本条件(ベースケース)を満たすまで自分自身を呼び出し続ける関数のことです。配列の要素数を数える場合も、この再帰の考え方を利用できます。

ここでは、以下のような点数のリストを格納した配列を例に説明します。

var listOfMarks=[56,78,90,94,91,82,77];

再帰関数で要素数をカウントする仕組み

再帰的に要素を数える考え方はシンプルです。まず配列の先頭要素を「1」としてカウントし、slice(1) で先頭を除いた残りの配列に対して同じ関数を再度呼び出します。そして、配列が空になった時点で 0 を返すことで再帰が終了し、各呼び出しで返された値が積み上がって合計の要素数が求められます。

以下は、配列の要素数を取得するサンプルコードです。

function countNumberOfElementsUsingRecursive(listOfMarks) {
   // ベースケース:配列が空なら0を返す
   if (listOfMarks.length == 0) {
       return 0;
   }
   // 先頭1つ分を加算し、残りの配列に対して再帰呼び出し
   return 1 +
   countNumberOfElementsUsingRecursive(listOfMarks.slice(1));
}
var listOfMarks=[56,78,90,94,91,82,77];
console.log("The array=");
console.log(listOfMarks);
var numberOfElements=countNumberOfElementsUsingRecursive(listOfMarks);
console.log("The Number of elements = "+numberOfElements);

プログラムの実行方法

上記のプログラムを実行するには、Node.js環境で次のコマンドを使用します。

node fileName.js

ここでは、ファイル名を demo110.js として保存しています。

実行結果

実行すると、以下の出力が得られます。

PS C:\Users\Amit\JavaScript-code> node demo110.js
The array=[
   56, 78, 90, 94,
   91, 82, 77
]
The Number of elements = 7

処理の流れを解説

この再帰処理は、以下のステップで動作しています。

  1. 1回目の呼び出し: 配列 [56, 78, 90, 94, 91, 82, 77] は空ではないため、1 を加算する準備をして、残り6個の配列 [78, 90, 94, 91, 82, 77] に対して再帰呼び出しを行います。
  2. 2回目以降: 同様に slice(1) で先頭要素を取り除きながら、呼び出しごとに 1 を積み上げていきます。
  3. 最後の呼び出し: 配列が空(length が 0)になると、ベースケースにより 0 が返され、再帰が終了します。
  4. 最終結果: 各段階で返された 1 が順番に足し合わされ、要素数「7」が出力されます。

補足:実務では length プロパティが便利

再帰による要素数のカウントは、再帰の仕組みを理解するのに最適な教材です。ただし、実際の開発では listOfMarks.length のように length プロパティを使えば、一瞬で要素数を取得できます。

また、このサンプルでは再帰呼び出しごとに slice() で新しい配列が生成されるため、要素数の多い配列ではメモリ消費やパフォーマンスへの影響に注意が必要です。その点でも、実用場面では length プロパティの利用が推奨されます。

  1. C++で別の配列を使って配列の要素を最大化する方法

    C++では、2つの配列を組み合わせて「大きい要素だけを持つ配列」を作り出すことができます。本記事では、サイズnの2つの配列が与えられたとき、両方の配列からn個の最大かつ重複しない要素を抜き出し、第2配列を優先しながら元の順序を保って第1配列を書き換えるアルゴリズムを、サンプルコードと実行結果あわせて解説します。 問題の概要 サイズnの2つの配列が与えられます。第2配列の要素を使って第1配列を最大化します。このとき、新しく作られる配列は次の条件を満たす必要があります。 両方の配列に含まれる要素の中から、大きい方からn個を選ぶ 選んだ要素は重複してはならない(すべて一意であること) 第2配列の要

  2. Pythonのmap()関数を使って2次元配列(2D配列)の合計を求める方法

    このチュートリアルでは、Pythonのmap()関数を使って、2次元配列(リストのリスト)の合計を求める方法を解説します。 map()関数は、関数とイテラブル(反復可能オブジェクト)の2つの引数を受け取ります。イテラブルの各要素が関数に渡され、その結果はmapオブジェクトとして格納されます。mapオブジェクトはlist()などでイテラブルに変換できます。 処理の手順 リストを使って2次元配列を初期化します。 sum関数と2次元配列をmap()関数に渡します。 結果として得られるmapオブジェクトの合計を求めて出力します。 コード例 以下のコードを見てみましょう。 # 2次元配列の初期化 a