Koala - 2기/C반
[2748] 피보나치 수 2 - 20200118(1)
알 수 없는 사용자
2021. 1. 18. 22:48
문제
피보나치 수는 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;
}