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

JavaScriptで数値内の最大の桁差を求める方法

本記事では、数値を受け取り、その数値を構成する任意の2つの桁の間に存在する最大の差を返すJavaScript関数の作成方法を解説します。

言い換えれば、この関数は「数値の中で最も大きい桁」と「最も小さい桁」の差を単純に返すものです。

数値が 654646 の場合、
最も小さい桁は 4、最も大きい桁は 6 です。
したがって、出力は 2 となります。

実装コード

この問題を解くコードは以下の通りです。

const num = 654646;
const maxDifference = (num, min = Infinity, max = -Infinity) => {
    if(num){
        const digit = num % 10;
        return maxDifference(Math.floor(num / 10), Math.min(digit, min),
        Math.max(digit, max));
    };
    return max - min;
};
console.log(maxDifference(num));

出力結果

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

2

コードの仕組み

この関数は再帰処理を使って数値を1桁ずつ処理していきます。具体的な流れは以下の通りです。

num % 10 によって最下位の桁(一の位)を取り出し、これまでの最小値・最大値とそれぞれ Math.minMath.max で比較して更新します。その後、Math.floor(num / 10) で数値を1桁削り、自分自身を再帰的に呼び出します。

すべての桁を処理し終えて num が 0 になると、再帰が終了し、保持していた最大値から最小値を引いた差が最終的な結果として返されます。

また、初期値として最小値に Infinity、最大値に -Infinity を設定しているため、どのような正の整数に対しても正しく動作する点がポイントです。

  1. 【JavaScript】各桁の積と合計の絶対差を求める方法

    概要 JavaScriptでは、正の整数を唯一の引数として受け取る関数を作成できます。この関数は、まずその数値の各桁の合計を計算し、次に各桁の積を計算します。そして最後に、積と合計の絶対差を結果として返します。 具体例 入力する数値が次の場合: const num = 12345; 各桁の合計は 1 + 2 + 3 + 4 + 5 = 15、各桁の積は 1 × 2 × 3 × 4 × 5 = 120 となります。したがって、絶対差は |120 − 15| = 105 となり、出力は次のようになります。 const output = 105; コード例 実際のコードは以下の通りです。 {

  2. JavaScriptで1からnまでのすべての数値で割り切れる最小の数値を求める方法

    問題 数値 n を引数として受け取る JavaScript 関数を作成する必要があります。この関数は、1 から n までのすべての整数で割り切れる最小の正の整数を求めて返します。 実は、この問題は数学における「最小公倍数(LCM)」を求める問題と同じです。1 から n までのすべての数値の最小公倍数こそが、求めるべき答えとなります。 例 n = 10 の場合を考えてみましょう。2520 という数値は、1・2・3・…・10 のすべての数値で余りなく割り切ることができる、最も小さい数値です。 以下のコードを見てみましょう − const num = 11; const smallestDivis