문제풀이
재귀함수를 사용하여 피보나치 수열을 구하면 됨. 이전 두 항의 합을 더하면 현재 항의 값이 나오게 됨.
재귀 함수 관점에서 생각하면 5번째 항이면 3번째와 4번째 항, 그리고 각각 3번째 항은 (1번째 항과 2번째 항)의 합이고, 4번째 항은 (2번째 항과 3번째 항)의 합이 됨. 이런 식으로 쪼개지고 쪼개지고 하는 것임.
이번 문제는 시간 제한이 2초나 되고 입력되는 자연수가 20이하이므로 재귀 함수를 편하게 구현하면 됨.
소스코드
#include <iostream>
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<<fibbo(n);
}
'C C++ > C C++ 알고리즘 문제 기타' 카테고리의 다른 글
[C/C++] 코드업 1805 : 입체기동장치 생산공장 (1) | 2022.10.08 |
---|---|
[C/C++] 코드업 1916 : (재귀함수) 피보나치 수열 (Large) (0) | 2022.10.08 |
[C/C++] 코드업 1904 : (재귀함수) 두 수 사이의 홀수 출력하기 (0) | 2022.10.04 |
[C/C++] 코드업 1902 : (재귀 함수) 1부터 n까지 역순으로 출력하기 (0) | 2022.10.04 |
[C/C++] 코드업 1901 : (재귀 함수) 1부터 n까지 출력하기 (0) | 2022.10.04 |
댓글