본문 바로가기

C C++/C C++ 알고리즘 문제 기타47

[C/C++] 코드업 1915 : (재귀함수) 피보나치 수열 문제풀이 재귀함수를 사용하여 피보나치 수열을 구하면 됨. 이전 두 항의 합을 더하면 현재 항의 값이 나오게 됨. 재귀 함수 관점에서 생각하면 5번째 항이면 3번째와 4번째 항, 그리고 각각 3번째 항은 (1번째 항과 2번째 항)의 합이고, 4번째 항은 (2번째 항과 3번째 항)의 합이 됨. 이런 식으로 쪼개지고 쪼개지고 하는 것임. 이번 문제는 시간 제한이 2초나 되고 입력되는 자연수가 20이하이므로 재귀 함수를 편하게 구현하면 됨. 소스코드 #include using namespace std; int fibbo(int a){ if (a==1 || a==2) return 1; else return fibbo(a-1)+fibbo(a-2); } int main() { int n; cin>>n; cout 2022. 10. 8.
[C/C++] 코드업 1904 : (재귀함수) 두 수 사이의 홀수 출력하기 문제풀이 재귀함수의 기본을 이용하여 풀 수 있는 문제임. 1) 재귀 함수 내 if와 return문으로 '정지'하는 조건 설정 2) 재귀 함수에 적절한 인자를 넣어서 호출 이 문제는 a와 b가 주어지므로 a를 하나씩 올려가면서 a가 홀수일 때 출력하면 됨. 그리고 마지막 숫자인 b와 같아졌을 때 판별하고 재귀 함수를 멈추면 됨. 소스코드 #include #include #include using namespace std; int a, b; void recursive(int x, int y) { if (x==y) { if (x%2!=0) { cout 2022. 10. 4.
[C/C++] 코드업 1902 : (재귀 함수) 1부터 n까지 역순으로 출력하기 문제풀이 앞선 1부터 n까지 출력하는 문제와 동일한 원리임. 재귀 함수의 핵심은 1) 재귀 함수 내에 if 조건과 return문을 통해 재귀 함수를 멈춰주는 것 2) 다음 함수를 조건에 맞게 적절하게 불러주는 것 이 문제는 n에서 1까지 출력하는 것이므로 1을 만나게되면 재귀 함수 호출을 그만두도록 조건을 걸면 됨. 소스코드 #include #include #include using namespace std; int n; void recursive(int a) { if (a==1) { cout 2022. 10. 4.
[C/C++] 코드업 1901 : (재귀 함수) 1부터 n까지 출력하기 문제 풀이 이 문제는 1부터 n까지 재귀 함수를 통해 출력하는 문제임. 재귀 함수의 핵심은 1) 재귀 함수 내에 if 조건과 return문을 통해 재귀 함수를 멈춰주는 것 2) 다음 함수를 조건에 맞게 적절하게 불러주는 것 이렇게 두 가지라고 할 수 있고, 이 원리는 다른 재귀함수 문제에도 통용됨. 이 문제는 n까지 출력하는 것이므로 n을 만나게되면 재귀 함수 호출을 그만두도록 조건을 걸면 됨. 문제풀이 #include #include #include using namespace std; int n; void recursive(int a) { if (a==n) { cout 2022. 10. 4.