4月19日今日のアルゴリズム


コラズの推測
1937年にCollatzが提案したこの推測は,与えられた数が1になる前に次のタスクを繰り返し実行すれば,すべての数を1にすることができるということである.操作は次のとおりです.
1-1. 入力した数字が偶数の場合は2に分けられます.
1-2. 入力した数字が奇数の場合、3を掛けて1を加算します.
2.結果が1になるまで、同じ操作を繰り返します.
例えば、入力された数字が6であれば、6→3→10→5→16→8→4→2→1の計8回が1となる.
上記の操作を何回繰り返すかを示す関数を返します.解決策を完了します.
ただし、タスクを500回繰り返しても1未満の場合は、-1を返します.
function solution(num) {
    count = 0 
    for(let i = 0; i< 500; i++){ //500번을 반복했을때 1이 안나오면 return -1 
        if (num !== 1){ //1이 아닌 경우
        (num = num % 2=== 0? num /2 : num *3 + 1) //num을 2로 나누었을 때 나머지가 0인 경우에는 num/2 아닌 경우에는 num *3 + 1
        }
        else { //num이 1이 된 경우 
            return count = i //현재 횟수 출력 
        }
    }return count = -1 //500번을 반복했을때 1이 안나오면 return -1 
}
function solution(num) {
    var count = 0;

    while (count < 500) {
        if (num === 1) {
            return count;
        }
        count ++;
        num = num % 2 === 0 ? num /2 : num *3 +1;
    }

    return -1;
}
ドアを使わない傾向がありますが、whileドアを使って問題を解く練習が必要です.