Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การหาจำนวนที่มีความสุขโดยใช้การเรียกซ้ำ JavaScript


เลขแห่งความสุข

จำนวนที่มีความสุขคือตัวเลขที่ในที่สุดก็ถึง 1 เมื่อแทนที่ด้วยผลรวมของกำลังสองของแต่ละหลัก ขณะที่ในระหว่างกระบวนการนี้ ตัวเลขใด ๆ ที่ซ้ำกัน วัฏจักรจะทำงานอย่างไม่สิ้นสุด และตัวเลขดังกล่าวจะเรียกว่าตัวเลขที่ไม่มีความสุข

ตัวอย่างเช่น − 13 เป็นตัวเลขที่มีความสุขเพราะ

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

ในทางกลับกัน 36 เป็นตัวเลขที่ไม่มีความสุข

เราจำเป็นต้องเขียนฟังก์ชันที่ใช้การเรียกซ้ำเพื่อกำหนดว่าตัวเลขนั้นเป็นตัวเลขที่มีความสุขหรือไม่

ลองเขียนฟังก์ชันนี้ออกมา กุญแจสำคัญของฟังก์ชันนี้คือเราจะต้องเก็บบันทึกตัวเลขที่ปรากฎแล้ว ถ้าตัวเลขเดิมปรากฏอีก กลายเป็นเท็จ ถ้าตัวเลขยกกำลังสองรวมกันได้ 1 เราจะคืนค่าเป็นจริง

เราจะใช้วัตถุเพื่อติดตามจำนวนที่ปรากฏขึ้นแล้ว เราอาจใช้ setor Map ก็ได้ แต่วัตถุธรรมดาจะทำเพื่อเราเช่นกัน

รหัสสำหรับการทำเช่นนั้นจะเป็น -

ตัวอย่าง

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