1420: [재귀함수] 3n+1

메모리제한:128 MB 시간제한:1.000 S
Judge Style:Text Compare 만든사람:
제출:1 통과:1

문제 설명

컴퓨터과학에서는 다양한 알고리즘을 이용한 여러 문제들이 있다. 그 중 3n+1이라고 하는 문제에 대해서 알아보자. 

(1) input n 
(2) print n 
(3) if n = 1 then STOP 
(4) if n is odd then n <-- 3n+1 
(3) else n <-- n/2 
(3) goto (2) 

만약 n이 22라면 위 알고리즘은 다음과 같은 값을 출력한다. 
22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 
어떤 수 n에 대해서 나타나는 수열의 길이를 사이클 길이라고 한다. 
위와 같이 입력이 22인 경우 총 16개의 길이를 가지는 수열을 출력한다. 따라서 22의 사이클길이는 16이다. 
이 알고리즘은 우리가 다루는 대부분의 수의 범위 내에서는 일정한 출력 후에 종료되지만 아직 모든 입력값에 대해서 성립함이 증명되지는 않았다. 
이번 문제에서는 입력받은 n의 사이클 길이를 출력하는 것이 목적이다. 
단 재귀함수로 작성하시오.

입력 설명

한 정수 n이 주어진다. 

[입력값의 정의역] 
1 <= n <= 100,000

출력 설명

n의 사이클 길이를 출력한다.

입력 예시 Copy

22

출력 예시 Copy

16