본문 바로가기

재귀함수5

Division 문제 임의의 자연수는 그보다 작은 자연수들의 합으로 표현될 수 있다. 예를 들어 4의 경우 4 = 3+1 = 2+2 = 2+1+1 = 1+1+1+1 위와 같은 방법으로 표현 될 수 있다. 이 때 , 숫자의 구성이 같으면서 그 순서만이 다른 경우는 같은 경우로 생각하는데, 예를 들어 다음 세 가지 경우는 모두 같은 경우이다. 2+1+1, 1+2+1, 1+1+2 자연수 n을 입력 받아 이를 n보다 작은 자연수들의 합으로 나타내는 방법을 모두 출력하는 프로그램을 재귀 호출을 사용하여 작성하시오. 입력 첫 줄에 2 이상 20 이하의 자연수 n이 주어진다. 출력 첫째 줄부터 모든 방법을 한 줄에 하나씩 출력한다. 하나의 식 안에는 큰 숫자가 앞으로 오도록 하고, 전체적으로는 앞의 숫자가 큰 식이 먼저 출력되도록 .. 2022. 7. 16.
순열 구하기 문제 서로 다른 n개의 원소들 중에서 r개만을 뽑아 일렬로 나열하는 것을 순열이라 한다. 예를 들어, 3개의 원소 a, b, c 중에서 2개만을 뽑아 나열하면 ab, ac, ba, bc, ca, cb 의 6가지 경우가 있다. n과 r이 주어질 때, n개의 소문자 중에서 r개만을 뽑아 나열하는 모든 경우를 출력하는 프로그램을 작성하시오. 단, a부터 시작하여 연속으로 n개의 알파벳을 갖고 있다고 하자. 입력 첫 번째 줄에 n과 r이 주어진다. ( 1 ≤ n ≤ 10, 0 ≤ r ≤ min(n, 7) ) 출력 각 줄에 n개의 소문자 중에서 r개만을 뽑아 나열하는 경우를 사전순으로 나열한 결과를 출력한다. 예제 입력 4 2 예제 출력 ab ac ad ba bc bd ca cb cd da db dc 전체 코드 .. 2022. 7. 16.
팩토리얼 문제 N 팩토리얼 (N!)은 1부터 N까지의 곱으로 정의된다. 예를 들어 3! = 1 x 2 x 3 = 6 4! = 1 x 2 x 3 x 4 = 24 이다. N이 주어질 때, N!을 계산하는 프로그램을 작성하시오. 입력 첫 번째 줄에 숫자 N이 주어진다. ( 1 ≤ N ≤ 10 ) 출력 첫째 줄에 N!을 출력한다. 예제 입력 4 예제 출력 24 전체 코드 #include using namespace std; int main(){ int n; cin >> n; int ans=1; for(int i=2; i 2022. 7. 16.
Binary 문제 숫자를 입력 받아 이진수로 출력하는 프로그램을 작성하시오 입력 첫 번째 줄에 숫자를 입력 받는다. 숫자의 크기는 1000보다 작거나 같다. 출력 첫째 줄에 숫자를 이진수로 바꾸어 출력한다. 예제 입력 14 예제 출력 1110 예제 입력 31 예제 출력 11111 전체 코드 #include #include using namespace std; int main() { int n; cin >> n; stack s; while(n!=0){ int a = n%2; s.push(a); n/=2; } while(!s.empty()){ cout 2022. 7. 15.
Recursion Function(재귀 함수) 재귀함수란? 함수를 정의할 때 자신을 재참조하는 함수 계속해서 자기 자신의 함수를 호출하며 같은 로직을 반복해나가고 인덱스를 변화시켜 진행되는 문제에서 사용 ex) 피보나치 F(0) = 0, F(1) = 1 이며 N>=2일 때 F(N) = F(N-1) + F(N-2) 코드로 구축했을 때 #include using namespace std; int fibo(int idx){ if(idx == 0 || idx == 1) return idx; return fibo(idx - 1) + fibo(idx - 2); } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cout 2022. 6. 20.