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

JavaScriptで数値の全桁を再帰的に合計して一桁にする方法

はじめに

数値を受け取り、その各桁の合計が一桁になるまで再帰的に計算し続ける関数を作成する必要があるとしましょう。

例えば、次のように動作します。

findSum(12345) = 1+2+3+4+5 = 15 = 1+5 = 6

この場合の出力は 6 になります。

それでは、この関数 findSum() の実装コードを見ていきましょう。

コード例

// 再帰を使用した実装
const findSum = (num) => {
    if(num < 10){
        return num;
    }
    const lastDigit = num % 10;
    const remainingNum = Math.floor(num / 10);
    return findSum(lastDigit + findSum(remainingNum));
}
console.log(findSum(2568));

仕組みの解説

まず、引数として受け取った数値が10未満かどうかを判定します。10未満であれば、すでに一桁に縮約されているため、その値をそのまま返します。

それ以外の場合は、剰余演算子(%)を使って最後の一桁を取り出し、Math.floor() を使って残りの桁部分を求めます。そして両者を合計した値に対して関数自身を再帰的に呼び出すことで、結果が一桁(10未満)になるまで処理を繰り返します。

出力

上記のコードを実行すると、次の出力が得られます。

3

これは、2568 の各桁を合計すると 2+5+6+8 = 21 となり、さらに 2+1 = 3 となるためです。

  1. JavaScriptで数値の各桁の数字を一つずつ分割表示する方法

    はじめに この記事では、ユーザーが入力した数値を検証し、有効な数値であればその各桁の数字を画面に一つずつ表示するJavaScriptプログラムの作り方を解説します。 動作イメージ ページ上のボタンをクリックすると入力ダイアログが開き、そこに数値を入力してOKを押すと、入力された数値の各桁が一行ずつ画面に出力される仕組みです。 例えば、入力が次のような場合—— 43354 画面には次のように表示されます。 4 3 3 5 4 完成コード HTML <!DOCTYPE html> <html>   <head>   &n

  2. JavaScriptで長方形内に埋め込まれた正方形の周囲長の合計を求める方法

    問題 下図のように、1つの長方形の中に正方形が5つ埋め込まれている状況を考えてみましょう。 このとき、それぞれの正方形の周囲長は次のようになります。 4 + 4 + 8 + 12 + 20 = 48 単位 一見すると複雑な計算が必要そうに思えますが、よく観察すると各正方形の一辺の長さがフィボナッチ数列(1, 1, 2, 3, 5, ...)に従っていることが分かります。つまり、n個の正方形が埋め込まれている場合、周囲長の合計は「最初のn項のフィボナッチ数の総和 × 4」で求められるのです。 そこで本記事では、数値 n を引数として受け取り、n個の正方形が埋め込まれた場合の周囲長の合計を返す