문제 출처: https://www.acmicpc.net/problem/10870
1. 코드
#include <stdio.h>
int a = 0, b = 1, c = 1;
int F(int n)
{
if(n > 1)
{
c = a + b;
a = b;
b = c;
return F(n - 1);
}
else if(n == 0) return 0;
else return c;
}
int main(void)
{
int n;
scanf("%d", &n);
printf("%d \n", F(n));
return 0;
}
2. 문제 해결 방식
문제는 간단했다. 재귀 함수로 문제를 해결하였는다. 그런데 우선 피보나치수열에 대해 알아보자.
그림을 보면 기본적인 형식을 a + b = c라고 할 때 a의 값은 기존의 b값이 되고 b값은 기존의 c값이 된다. 그렇다면 처음에 0 + 1 = 1만 설정되어 있다면 계속해서 진행이 가능하다는 것이다.
그렇다면 재귀 함수로 이런 방식으로 진행하게 한다면 문제는 쉽게 해결할 수 있을 것이다.
3. 느낀 점
처음 보고 어려워 보였지만 생각보다 간단한 문제여서 처음부터 너무 겁먹었던 것 같다. 두려워하지 않고 계속해서 도전해나가야겠다.
'컴퓨터 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 10718번: We love kriii Java[자바] (0) | 2020.04.20 |
---|---|
백준 알고리즘 2557번: Hello World Java[자바] (0) | 2020.04.16 |
백준 알고리즘 10872번: 팩토리얼 C언어 (2) | 2020.04.12 |
백준 알고리즘 1002번: 터렛 C언어 (0) | 2020.04.07 |
백준 알고리즘 3053번: 택시 기하학 C언어 (0) | 2020.04.04 |