콜라츠 추측이란 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측
1-1. 입력된 수가 짝수라면 2로 나눔
1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더함
2. 결과로 나운 수에 같은 작업을 1이 될 때까지 반복
입력된 수 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
6 | 6/2=3 | 3*3+1=10 | 10/2=5 | 5*3+1=16 | 16/2=8 | 8/2=4 | 4/2=2 | 2/2=1 |
작업을 500번 반복해도 1이 되지 않으면 -1 반환
입력된 수는 1이상 8000000 미만인 정수
n | result |
---|---|
6 | 8 |
16 | 4 |
626331 | -1 |
function solution(num) {
let answer = 0,
reFuc = (n) => {
answer++; // 실행 횟수
n%2===0 ? n !== 2 && reFuc(n/2) : n === 1 ? answer = 0 : reFuc(n*3+1);
}
reFuc(num);
return answer>500 ? -1 : answer;
}
🤍 재귀함수
자기 자신을 호출 하는 구조로 만들어진 함수
재귀함수 작성 구성요소
1. 종료 조건
2. 다른 입력 값