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
-
C++で数値の桁の合計を1桁になるまで繰り返し求める方法
このチュートリアルでは、与えられた整数の各桁の合計を計算し、その結果が1桁になるまで同じ処理を繰り返すプログラムをC++で作成します。このような演算は「デジタルルート(数字根)」と呼ばれることもあります。 まずは具体的な例を見てみましょう。 入力: 4543 出力: 7 計算の流れは次のとおりです。まず 4 + 5 + 4 + 3 = 16 となり、16はまだ2桁なのでさらに 1 + 6 = 7 を計算します。7は1桁なので、これが最終的な答えになります。 解き方の手順 対象となる数値を用意します。 合計を格納する変数を0で初期化します。 合計が9以下になるまで以下の処理を繰り返します。
-
【C++】数値の桁の合計が1桁になるまで計算するプログラムの作成方法
はじめに本記事では、数値の各桁の合計を計算し、その結果が1桁になるまで処理を繰り返すC++プログラムについて解説します。例として、数値14520を考えてみましょう。まず各桁を足すと、1 + 4 + 5 + 2 + 0 = 12となります。しかし12はまだ2桁の数値なので、さらにその桁同士を足し合わせます。すると、1 + 2 = 3となります。3は1桁の数値であるため、これ以上桁の合計を計算することはできません。したがって、3が最終的な答えとなります。解法のアプローチ:デジタルルートの活用この問題を効率的に解くには、「9の倍数の各桁の合計は必ず9になる」という数学的な性質を利用します。9で割り切