使用遞迴 JavaScript 來確定快樂數
快樂數
快樂數是指最終能變為 1 的數,而在這個過程中,如果有任何一個數重複出現,那麼這個迴圈將無限地進行下去,這樣的數被稱為不快樂數。
例如 − 13 是一個快樂數,因為:
1^2 + 3^2 = 10 and, 1^2 + 0^2 = 1
另一方面,36 是一個不快樂數
我們需要編寫一個使用遞迴來確定一個數是否為快樂數的函式。
因此,讓我們寫出這個函式。這個函式的要點是,我們必須記錄已經出現的數字,如果同一個數字再次出現,我們返回 false,否則,如果平方後的數字加起來等於 1,則返回 true。
我們將使用一個物件來跟蹤已經出現的數字,我們也可以使用 set 或 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP