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

JavaScriptで数値の各桁の積を求める方法(0は1として扱う再帰処理)

JavaScriptで数値の各桁の積を求める方法

本記事では、引数として受け取った数値の全桁の積(掛け算の結果)を求めるJavaScript関数の実装方法を解説します。

ここでの重要なルールは、数値の中に「0」が含まれていた場合でも、その桁を「1」として扱って乗算するという点です。これは、0が含まれると結果が必ず0になってしまうためです。

具体例

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

5720

この場合、「5 × 7 × 2 × 1」の計算が行われ、期待される出力は 70 となります。

コード例

この関数は、再帰処理を使うことで簡潔に実装できます。

const num = 5720;
const recursiveProduct = (num, res = 1) => {
    if(num){
        return recursiveProduct(Math.floor(num / 10), res * (num % 10 || 1));
    }
    return res;
};
console.log(recursiveProduct(num));

コードの解説

このコードの動作のポイントは以下の通りです。

  • num % 10 で最下位の桁(一の位)を取り出します。
  • num % 10 || 1 という記述により、取り出した桁が 0 の場合は代わりに 1 が使用されます。
  • Math.floor(num / 10) で最下位の桁を除いた残りの数値を取得し、再帰的に同じ処理を繰り返します。
  • num が 0 になった時点で再帰を終了し、これまで累積してきた積(res)を返します。

デフォルト引数 res = 1 を使うことで、最初の呼び出し時に初期値を意識せずに済む点も、この実装のスマートなところです。

出力

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

70

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

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

  2. JavaScriptで数値が三角数かどうかを判定する方法

    三角数(Triangular Number)とは? 三角数とは、点を正三角形の形に敷き詰めたときに現れる数のことです。n番目の三角数は「1からnまでの自然数の合計」として表され、次の公式で求められます。 Tn = n(n+1) / 2 具体的な三角数は 1, 3, 6, 10, 15, 21, 28 … と続きます。例えば 10 は、各辺に4個の点を配置した正三角形を構成できるため、三角数です。 問題 数値を引数として受け取り、その数値が三角数であれば true を、そうでなければ false を返すJavaScript関数を実装します。 判定の考え方 n(n+1)/2 = num となる正