【JavaScript】再帰処理を使って配列の最小値を見つける方法
JavaScriptでは、再帰(リカーシブ)処理を活用することで、ループ構文に頼らずに配列の中から最小値を見つけることができます。まず、次のような数値の配列を用意しましょう。
var numbers=[10,101,76,56,5,210,3,100];
再帰関数で最小値を求めるコード
考え方はシンプルです。配列の先頭2つの要素を比較し、大きい方の要素を取り除く操作を繰り返します。これを再帰的に続けていくと、最終的に配列には1つの要素だけが残り、それが最小値となります。
サンプルコード
function findMinimumElementUsingRecursive(numbers) {
if (numbers.length==1){
return numbers[0];
}
else if(numbers[0]>numbers[1]) {
return findMinimumElementUsingRecursive(numbers.slice(1));
} else {
return findMinimumElementUsingRecursive([numbers[0]].concat(numbers.slice(2)));
}
}
var numbers=[10,101,76,56,5,210,3,100];
console.log("The minimum element is="+findMinimumElementUsingRecursive(numbers));このコードでは、slice()メソッドで不要な要素を切り出して配列を縮小しながら自分自身を呼び出しています。先頭の要素の方が大きければ先頭を除外し、そうでなければ2番目以降を除外して先頭の要素を保持する、という分岐になっています。
プログラムの実行方法
上記のプログラムはNode.js環境で動作します。ファイルを保存したら、ターミナルから次のコマンドを実行してください。
node fileName.js
実行結果
ここでは、ファイル名をdemo152.jsとして保存し、実行しています。すると、以下のように配列内の最小値が出力されます。
PS C:\Users\Amit\JavaScript-code> node demo152.js The minimum element is=3
このように、再帰呼び出しを繰り返して比較対象の要素を絞り込んでいくことで、最後に残った要素、すなわち最小値「3」が返されます。ループ文を使わないため、コードが簡潔になり、再帰的なアルゴリズムの学習にも適した例といえるでしょう。
-
【JavaScript】整数の中からn番目の回文数を見つける方法
問題 数値 n を引数として受け取り、0から数えて n 番目にあたる回文数(回文となる整数)を返す JavaScript 関数を作成します。 たとえば、1番目の回文数は「0」、2番目は「1」、10番目は「9」です。「10」は逆から読むと「01」となり回文ではないため、11番目の回文数は「11」となります。 回文数とは 回文数とは、桁を逆から並べ替えても元の数と同じになる整数のことです。「7」「121」「1331」などがその例です。 解決策:コード例 以下が実際のコードです。 const num = 31; const findNthPalindrome = (num = 1) => {
-
JavaScriptで指定した範囲内にある「ある数で割り切れる数」の個数を求める方法
問題2つの整数からなる範囲(配列)を第1引数に、1つの数値を第2引数として受け取るJavaScript関数を作成する必要があります。この関数は、指定された範囲内に存在する「入力された数値で割り切れる数」をすべて見つけ、その合計個数を返します。サンプルコード以下がその実装例です。const range = [6, 57]; const num = 3; const findDivisibleCount = (num = 1, [l, h]) => { let count = 0; for(let i = l; i <= h; i++