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