728x90
반응형

문제 : https://codeup.kr/problem.php?id=1928

 

(재귀함수) 우박수 (3n+1) (basic)

콜라츠의 추측, $3n+1$ 문제, 우박수 문제라고 불리는 이 문제는 다음과 같다. 1, 어떤 자연수 $n$이 입력되면, 2. $n$이 홀수이면 $3n+1$을 하고, 3. $n$이 짝수이면 $\frac{n}{2}$를 한다. 4. 이 $n$이 $1$이 될�

codeup.kr

 

문제 설명

콜라츠의 추측, 3n+13n+1 문제, 우박수 문제라고 불리는 이 문제는 다음과 같다.

1, 어떤 자연수 nn이 입력되면,

2. nn이 홀수이면 3n+13n+1을 하고,

3. nn이 짝수이면 n2n2를 한다.

4. 이 nn 11이 될때까지 2 32 3과정을 반복한다.

예를 들어 55 55  1616  88  44  22  11 이 된다.

이 처럼 어떤 자연수 nn이 입력되면 위 알고리즘에 의해 11이 되는 과정을 모두 출력하시오.

이 문제는 반복문 for, while 등을 이용하여 풀수 없습니다.

금지 키워드 : for while goto

 

 

입력

자연수 nn이 입력된다.(1<=n<=10,000,000)(1<=n<=10,000,000)

단, 3n+13n+1이 되는 과정에서 intint범위를 넘는 수는 입력으로 주어지지 않는다.

출력

3n+13n+1의 과정을 출력한다.

입력 예시

5

출력 예시

5 
16
8
4 
2
1

 

 

코드 : 

# include <stdio.h>


void p(int a)
{
	printf("%d\n",a);
	if(a == 1)	
		return;
	
	if(a%2 == 1)
		p(a*3+1);
	else	
		p(a/2);
}

int main()
{
	int n;
	scanf("%d",&n);
	p(n);
	return 0;
}

 

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기