본문 바로가기
C C++/C C++ 알고리즘 문제 기타

[C/C++] 코드업 1928 : (재귀함수) 우박수 (3n+1) (basic)

by Go! Jake 2022. 10. 9.

문제풀이

이 문제는 하나 하나 과정마다 출력을 해야하기 때문에, 출력이 재귀 함수로 부르기 전 위치해서 현재 상황을 알려줘야 함.

cout<<x<<endl;
D(x);

종료 조건은 함수에 1이 들어왔을 때로 설정하면 완료.

if (x==1){
	return;
}

소스코드

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;

int n;

void D(int x)
{
	if (x==1){
		return;
	}
	else
	{
		if (x%2==0)
		{
			x/=2;
			cout<<x<<endl;
			D(x);
		}
		else
		{
			x=3*x+1;
			cout<<x<<endl;
			D(x);
		}
	}
}

int main()
{	
	cin>>n;
	cout<<n<<endl;
	D(n);

	return 0;	
}

댓글