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

JavaScriptで範囲内のすべての数値の合計を求める方法

問題

範囲を指定する配列を受け取るJavaScript関数を作成する必要があります。

この関数は、指定された範囲に含まれるすべての自然数(両端の数値も含む)の合計を計算し、その結果を返すものとします。

解決策:ループを使った実装

以下のコードでは、forループを使って下限値から上限値まで順番に足し合わせていく、シンプルな実装例を示します。

const range = [4, 67];
const findSum = ([l, h]) => {
    let sum = 0;
    for(let i = l; i <= h; i++){
        sum += i;
    };
    return sum;
};
console.log(findSum(range));

出力

コンソールには次のように出力されます。

2272

コードの解説

このコードでは、分割代入を使って配列から下限値 l と上限値 h を取り出しています。その後、forループで変数 il から h まで1ずつ増やしながら、各値を sum 変数に加算していきます。ループが完了した時点での sum が、求める合計値となります。

補足:等差数列の公式を使った効率的な方法

ループを使わず、等差数列の和の公式「(初項 + 末項) × 項数 ÷ 2」を利用すれば、より効率的に計算できます。

const range = [4, 67];
const findSum = ([l, h]) => {
    return ((l + h) * (h - l + 1)) / 2;
};
console.log(findSum(range));

この方法なら、範囲がどれだけ大きくてもO(1)の計算量で結果を取得できるため、大きな数値範囲を扱う場合にはパフォーマンス面で特に有利です。

  1. JavaScriptで指定範囲内の数値の立方和を計算する方法

    問題今回は、2つの数値からなる範囲配列を受け取り、その範囲内に含まれるすべての数値の立方数(3乗した値)を合計して返すJavaScript関数を作成します。たとえば、範囲が [4, 11] の場合、4³ から 11³ までの合計を求めることになります。解決のアプローチこの問題は次の手順で解くことができます。範囲の下限から上限まで、順番に各数値を取り出す取り出した数値を3乗する3乗した値を累積し、最終的な合計を返すコード例実際の実装コードは以下の通りです。const range = [4, 11]; const sumCubes = ([l, h]) => { const find

  2. JavaScriptで3つの配列に共通する要素の合計を求める方法

    問題今回は、3つの数値型配列を引数として受け取るJavaScript関数を作成します。この関数は、3つの配列すべてに共通して存在する要素だけを抜き出し、それらの合計値を返す必要があります。たとえば、次のような配列が与えられた場合を考えてみましょう。const arr1 = [4, 4, 5, 8, 3]; const arr2 = [7, 3, 7, 4, 1]; const arr3 = [11, 0, 7, 3, 4];この場合、3つの配列すべてに存在するのは「4」と「3」なので、期待される出力は 4 + 3 = 7 となります。解決策のコード例以下がその実装コードです。 { le