面试一脸懵:happy numbers

Write an algorithm to determine if a number is “happy”.
A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.

Example:

Input: 19
Output: true
Explanation: 
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1

代码实现

function isHappy(data, set = new Set()){
    
    
    let arr = data.toString().split("")
    let ans = 0
    for (let index = 0; index < arr.length; index++) {
    
    
        ans += Math.pow(arr[index],2)
    }
    if(arr.length === 1){
    
    
        if(set.has(arr[0])){
    
    
            return false;
        }
        set.add(arr[0])
        if(arr[0] === '1'){
    
    
            return true
        }else{
    
    
            return isHappy(Math.pow(arr[0],2),set) 
        }
    }else{
    
    
        return isHappy(ans,set)
    }
}

猜你喜欢

转载自blog.csdn.net/m0_37285193/article/details/121845523