알고리즘/백준
[C++] 백준 10870번 - 피보나치 수 5
Esunn
2022. 7. 24. 14:13
https://www.acmicpc.net/problem/10870
10870번: 피보나치 수 5
피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가
www.acmicpc.net
피보나치 수열 문제이다.
0과 1로 시작하여 그다음수는 그 합이 되는 게 피보나치 수열이다.
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610...
이런 식으로 진행된다.
fib(n) = fib(n-1) + fib(n-2)
이런 식으로 구할 수 있고 재귀 함수를 통해 구현했다.
#include <iostream>
using namespace std;
int Fib(int i) {
if (i <= 1) return i;
else return Fib(i - 2) + Fib(i - 1);
}
int main() {
int n;
cin >> n;
cout << Fib(n);
}
n이 0이나 1일 때는 예외처리를 해주고 재귀 함수를 이용해 구현해준다.
사실 이 문제를 재귀로 풀 줄 몰라서 단순하게 반복문으로 구현을 했는데
풀이를 보니 재귀 함수로 푸는 게 코드가 훨씬 간결해졌다.