문제요약:
피보나치 수는 0, 1로 시작한다. 0번째 피보나치 수는 0, 1번째 피보나치 수는 1이다.
그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다.
식으로는, F(n) = F(n-1) + F(n-2), (n >= 2) 가 된다.
n=17일 때까지 피보나치 수는 다음과 같다.
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597
n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하라.
*반드시 재귀함수를 사용해보자.
제약:
시간 제한 1초, 메모리 256MB
0 <= n <= 20, n은 정수.
예제 1 입력. | 예제 1 출력. |
0 | 0 |
예제 2 입력. | 예제 2 출력. |
1 | 1 |
예제 3 입력. | 예제 3 출력. |
10 | 55 |
정답코드:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#include <iostream>
using namespace std;
int Fibonacci(int n)
{
if ((n == 0) || (n == 1)) // Fibo[0] = 0, Fibo[1] = 1.
{
return n;
}
else if ((1 < n) && (n <= 20))
{
// Fibo[n-2] 와 Fibo[n-1]을 계산한 값을 return.
return Fibonacci(n - 2) + Fibonacci(n - 1);
}
else
{
return -1; // 문제에서 정의되지 않은 Case.
}
}
int main()
{
int N;
int nResult;
// N을 입력 받음.
cin >> N;
// 재귀함수로 피보나치 계산.
nResult = Fibonacci(N);
// 계산한 결과 출력.
cout << nResult << '\n';
return 0;
}
|
cs |
'알고리즘 문제풀이' 카테고리의 다른 글
[알고리즘] 백준 2447번 "별 찍기 - 10" - Don 임베디드 (24) | 2022.04.05 |
---|---|
[알고리즘] 백준 11399번 "ATM" (C/C++) - Don 임베디드 (18) | 2022.04.04 |
[알고리즘] 백준 11650번 "좌표 정렬하기" (C/C++) - Don 임베디드 (18) | 2022.04.01 |
[알고리즘] 백준 2750번 "수 정렬하기" (C/C++) - Don 임베디드 (15) | 2022.04.01 |
[알고리즘] 백준 1931번 "회의실 배정" (C/C++) - Don 임베디드 (14) | 2022.03.29 |