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;
}