문제
피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오.
풀이
더보기
n을 입력받은 뒤 피보나치 수의 공식( Fn = Fn-1 + Fn-2)을 이용한 함수를 만든다.
vector 를 이용하여 피보나치 수를 저장한다.
초기값으로 0번째 수는 0, 1번째 수는 1로 초기화 시켜놓는다.
최종적으로 n번째 피보나치 수를 출력한다.
소스코드
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
int N;
vector <long long> num;
long long result = 0;
int fib(int a) { // 피보나치 수의 공식을 이용한 함수
if (a == N + 1)
return 0;
else {
if (a == 0)
num.push_back(a);
else if (a == 1)
num.push_back(a);
else
num.push_back(num[a - 1] + num[a - 2]);
}
fib(a + 1);
return 0;
}
int main() {
cin >> N;
fib(0);
cout << num[N] ;
return 0;
}
'Koala - 2기 > C반' 카테고리의 다른 글
[25411633] 2×n 타일링 - 20200118(3) (0) | 2021.01.18 |
---|---|
[13301] 타일 장식물 - 20200118(2) (0) | 2021.01.18 |
[C++] sort 함수 내림차순, 내맘대로 정렬 (+DNA, 2017 아주대학교 프로그래밍 경시대회 (Large) 풀이) (0) | 2021.01.18 |
백준 11170번 0의 개수 // 송수헌 (0) | 2021.01.14 |
백준 7568번 덩치 // 송수헌 (0) | 2021.01.14 |