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

JavaScriptで数値の各桁を合計し、1桁になるまで繰り返す方法

本記事では、数値を引数として受け取り、その各桁の合計を計算し、結果が1桁になるまでこの処理を繰り返すJavaScript関数の実装方法を解説します。

問題の概要

求められているのは、数値を唯一の入力として受け取るJavaScript関数です。この関数が行うべき処理はシンプルで、以下の通りです。

  • 各桁の数字を合計し、その結果が1桁の数値に収束するまで同じ処理を繰り返す

処理の流れ(例)

例えば、次のような数値が与えられたとします。

const num = 5798;

この場合、計算は以下のように進みます。

5 + 7 + 9 + 8 = 29
2 + 9 = 11
1 + 1 = 2

したがって、最終的な出力は 2 となります。

コード例

この処理を実装するコードは以下の通りです。

const num = 5798;
const sumDigits = (num, sum = 0) => {
    if(num){
        return sumDigits(Math.floor(num / 10), sum + (num % 10));
    };
    return sum;
};
const repeatSum = (num) => {
    if(num > 9){
        return repeatSum(sumDigits(num));
    };
    return num;
};
console.log(repeatSum(num));

コードの解説

このコードでは、2つの再帰関数を組み合わせて使用しています。

  • sumDigits関数: 数値の各桁を取り出して合計します。num % 10 で最後の桁を取得し、Math.floor(num / 10) で残りの桁を次の処理対象として再帰的に呼び出します。numが0になった時点で合計値を返します。
  • repeatSum関数: 結果が9より大きい場合(つまり2桁以上の場合)、sumDigits関数を再度適用します。値が1桁になった時点で、その数値をそのまま返します。

出力結果

コンソールには以下が出力されます。

2
  1. C++で数値の桁の合計を1桁になるまで繰り返し求める方法

    このチュートリアルでは、与えられた整数の各桁の合計を計算し、その結果が1桁になるまで同じ処理を繰り返すプログラムをC++で作成します。このような演算は「デジタルルート(数字根)」と呼ばれることもあります。 まずは具体的な例を見てみましょう。 入力: 4543 出力: 7 計算の流れは次のとおりです。まず 4 + 5 + 4 + 3 = 16 となり、16はまだ2桁なのでさらに 1 + 6 = 7 を計算します。7は1桁なので、これが最終的な答えになります。 解き方の手順 対象となる数値を用意します。 合計を格納する変数を0で初期化します。 合計が9以下になるまで以下の処理を繰り返します。

  2. 【C++】数値の桁の合計が1桁になるまで計算するプログラムの作成方法

    はじめに本記事では、数値の各桁の合計を計算し、その結果が1桁になるまで処理を繰り返すC++プログラムについて解説します。例として、数値14520を考えてみましょう。まず各桁を足すと、1 + 4 + 5 + 2 + 0 = 12となります。しかし12はまだ2桁の数値なので、さらにその桁同士を足し合わせます。すると、1 + 2 = 3となります。3は1桁の数値であるため、これ以上桁の合計を計算することはできません。したがって、3が最終的な答えとなります。解法のアプローチ:デジタルルートの活用この問題を効率的に解くには、「9の倍数の各桁の合計は必ず9になる」という数学的な性質を利用します。9で割り切