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

再帰JavaScriptを使用したハッピー数の決定


ハッピー数

ハッピー数は、各桁の2乗の合計で置き換えると最終的に1に達する数です。一方、このプロセス中に任意の数が繰り返されると、サイクルは無限に実行され、そのような数は不幸な数と呼ばれます。

たとえば、-13はハッピー数です。なぜなら、

1^2 + 3^2 = 10 and,
1^2 + 0^2 = 1

一方、36は不幸な数字です。

再帰を使用して、数値がハッピー数であるかどうかを判断する関数を作成する必要があります。

それでは、この関数を書き出しましょう。この関数の鍵は、すでに出現した数字の記録を保持する必要があることです。同じ数字が別の出現をした場合はfalseになり、2乗した数字の合計が1になるとtrueを返します。

オブジェクトを使用して、すでに表示されている番号を追跡します。setorMapを使用することもできますが、単純なオブジェクトでも実行できます。

そのためのコードは-

になります

const squareSumRecursively = (n, res = 0) => {
   if(n){
      return squareSumRecursively(Math.floor(n/10), res+Math.pow((n%10),2));
   };
   return res;
};
const isHappy = (num, map = {}) => {
   if(num !== 1){
      if(map[num]){
         return false;
      }
      map[num] = 1;
      return isHappy(squareSumRecursively(num), map);
   };
   return true;
}
console.log(isHappy(36));
console.log(isHappy(13));
console.log(isHappy(36));
console.log(isHappy(23));

出力

コンソールの出力は-

になります
false
true
false
true

  1. JavaScriptを使用してNumberオブジェクトを作成するにはどうすればよいですか?

    Numberオブジェクトは、整数または浮動小数点数のいずれかの数値の日付を表します。数値オブジェクトを作成するための構文は次のとおりです- var val = new Number(number); new演算子のないNumberオブジェクトを使用して、型変換を実行できます。 Number.MAX_VALUEプロパティの例を見てみましょう。 Number.MAX_VALUEプロパティは、静的なNumberオブジェクトに属しています。 例 ライブデモ <html>    <head>       <script&g

  2. JavaScriptで10進数を検証するにはどうすればよいですか?

    以下は、JavaScriptで10進数を検証するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>