Collatz 함수
Written by Tejayon
Collatz 함수
1937년 Collatz란 사람에 의해 제기된 이 추측은 입력된 수가 짝수라면 2로 나누고 홀수라면 3을 곱하고 1을 더한다. 결과로 나온 수에 값을 작업을 1이 될 때까지 반복할 경우 모든 수가 1이 된다는 추측이다.
예를 들어, 입력된 수가 6이라면 6 > 3 > 10 > 5 > 16 > 8 > 4 > 2 > 1이 되어 총 8번 만에 1이 된다.
함수를 만들어 입력된 수가 몇번 만에 1이 되는지 반환해라. 만약 500번을 반복해도 1이 되지 않을 경우에는 -1을 반환해라.
///////Collatz함수//////////////
func collatz (number: Int) -> Int {
var tmpNum: Int = number
var count: Int = 0
while number > 1 {
if tmpNum % 2 == 0 {
tmpNum /= 2
count += 1
}else {
tmpNum = 3 * tmpNum + 1
count += 1
}
if tmpNum == 1 {
return count
}
if count > 500 {
return -1
}
}
return count
}
print(collatz(number: 123286325789578297))