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