हैप्पी नंबर
एक हैप्पी नंबर वह संख्या है जो अंततः 1 तक पहुंच जाती है जब इसे प्रत्येक अंक के वर्ग के योग से बदल दिया जाता है। जबकि यदि इस प्रक्रिया के दौरान कोई संख्या दोहराई जाती है, तो चक्र अनंत काल तक चलेगा और ऐसी संख्याओं को अनहैप्पी नंबर कहा जाता है।
उदाहरण के लिए - 13 एक हैप्पी नंबर है क्योंकि,
1^2 + 3^2 = 10 और, 1^2 + 0^2 = 1
दूसरी ओर, 36 एक अनहैप्पी नंबर है।
हमें एक फ़ंक्शन लिखना आवश्यक है जो रिकर्सन का उपयोग करके यह निर्धारित करता है कि कोई संख्या हैप्पी नंबर है या नहीं।
तो, आइए इस फ़ंक्शन को लिखें। इस फ़ंक्शन की कुंजी यह है कि हमें उन संख्याओं का रिकॉर्ड रखना होगा जो पहले ही आ चुकी हैं, यदि वही संख्या दूसरी बार आती है, तो हम false लौटाते हैं अन्यथा यदि वर्गाकार अंक 1 तक जुड़ जाते हैं, तो हम true लौटाते हैं।
हम पहले से आई संख्या को ट्रैक करने के लिए एक ऑब्जेक्ट का उपयोग करेंगे, हम सेट या मैप का भी उपयोग कर सकते थे, लेकिन एक साधारण ऑब्जेक्ट भी हमारे लिए काम करेगा।
इसे करने का कोड होगा:
उदाहरण
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