문제풀이
이 문제는 하나 하나 과정마다 출력을 해야하기 때문에, 출력이 재귀 함수로 부르기 전 위치해서 현재 상황을 알려줘야 함.
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;
}
'C C++ > C C++ 알고리즘 문제 기타' 카테고리의 다른 글
[C/C++] DFS 60. 합이 같은 부분집합(DFS : 아마존 인터뷰) (0) | 2022.10.20 |
---|---|
[C/C++] 코드업 1929 : (재귀함수) 우박수 (3n+1) (reverse) (0) | 2022.10.09 |
[C/C++] 코드업 1920 : (재귀함수) 2진수 변환 (0) | 2022.10.08 |
[C/C++] 코드업 1805 : 입체기동장치 생산공장 (1) | 2022.10.08 |
[C/C++] 코드업 1916 : (재귀함수) 피보나치 수열 (Large) (0) | 2022.10.08 |
댓글