백준(C언어) 풀이/다이나믹 프로그래밍

백준(C) 10870번 피보나치 수 5 풀이

개발윗미 2021. 8. 31. 14:01

C로 구현한 10870번 피보나치 수 5 구하기 문제 풀이입니다.

 

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


#include <stdio.h>

int n[21];

int fibo(int x) {
	if(x == 0)
		return 0;
	if(x == 1)
		return 1;
	if(n[x] != 0)
		return n[x];
	return n[x] = fibo(x - 1) + fibo(x - 2);
}

int main() {
	int input;
	scanf("%d", &input);
	printf("%d", fibo(input));
}

 

자연수를 입력받아 피보나치 수를 구하는 fibo( ) 함수를 수행하여 출력한다.

 

fibo( ) 함수에서는 만약 전달받은 매개변수 값이 0이라면 0을 리턴하고, 1이라면 1을 리턴한다.

 

그리고 배열 n의 해당 인덱스 값이 0이 아닐 경우 그대로 그 값을 리턴한다.

 

3가지의 조건이 모두 충족되지 않을 시 fibo( ) 함수를 재귀호출하여 해당 값의 이전 값과 2번째 이전 값을 더하여

 

해당 인덱스에 저장한 뒤 리턴한다.