プログラマー[レベル1]コーラの推測
4631 ワード
質問する
1937年にCollatzが提案したこの推測は,与えられた数が1になる前に次のタスクを繰り返し実行すれば,すべての数を1にすることができるということである.操作は次のとおりです.
1-1. 入力した数字が偶数の場合は2に分けられます.
1-2. 入力した数字が奇数の場合、3を掛けて1を加算します.
2.結果が1になるまで、同じ操作を繰り返します.
せいげんじょうけん
入力された数値numは1または800000未満の整数です.
I/O例
に答える
function solution(n) {
let count = 0;
while(n!==1){
if(count===500) return -1;
if(n%2 ===0){
n = n/2;
} else {
n = n*3 +1;
}
count++;
}
return count;
}
アルゴリズムをwhile文で解くときに感じるのはforだけでなくwhile反復文も適切に使うことです.別の解釈
function collatz(num) {
var answer = 0;
while(num !=1 && answer !=500){
num%2==0 ? num = num/2 : num = num*3 +1;
answer++;
}
return num == 1 ? answer : -1;
}
while文条件にcountの条件を加え,終了時に決定する.Reference
この問題について(プログラマー[レベル1]コーラの推測), 我々は、より多くの情報をここで見つけました https://velog.io/@bkdragon0228/프로그래머스Level-1-콜라츠-추측テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol