본문 바로가기
Javascript/자바스크립트 문제

[Javascript : programmers] 콜라츠 수열 만들기 (Lv.0)

by isfp_yykkng 2024. 8. 26.

[Javascript : programmers] 콜라츠 수열 만들기 (Lv.0)

 

문제

 

나의 정답 풀이

function solution(n) {
    let arr = [];
    while(n>=1){
        if(n == 1){
            arr.push(n);
            break;
        }
        arr.push(n);
        if(n%2==0) n/=2;
        else n = 3*n+1;
    }
    return arr;
}

 

while 반복문을 돌면서 n이 1일 때 break 하는 것이 핵심이다.

무한루프로 n을 배열에 넣고 짝수, 홀수에 따라 n을 변경한다.

 

다른 사람 풀이

function solution(n, arr = []) {
    arr.push(n)
    if (n === 1) return arr
    if (n % 2 === 0) return solution(n / 2, arr)
    return solution(3 * n + 1, arr)
}

 

재귀함수를 사용하여 풀은 색다른 풀이이다.

함수는 항상 n과 함수 arr을 매개변수로 받는다.

n이 1인 경우에는 끝나는 경우로 재귀하지 않고 배열을 반환한다.

n이 짝수인 경우에는 n/2 를, 그 외의 경우엔 n*3 +1 을 인자로 넘긴다.