본문 바로가기

코딩/백준 BOJ

[백준/C언어] 10870 - 피보나치 수 5

백준 웹사이트 "10870번 - 피보나치 수 5" 문제풀이입니다.

언어는 C언어입니다. (제출 언어: C99)

 


문제

 

10870번: 피보나치 수 5

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가

www.acmicpc.net


소스 코드

#include <stdio.h>

int fibonacci(int n);

int main(void){
    int n;
    scanf("%d", &n);

    printf("%d\n", fibonacci(n));
}

int fibonacci(int n){
    if(n==0)
        return 0;
    else if(n==1)
        return 1;
    else
        return fibonacci(n-1)+fibonacci(n-2);
}

문제 풀이

  재귀함수하면 빠지지 않는 또 다른 기본 예제, 바로 피보나치 수열입니다. 이전 문제 10872번에서 'Recursive Case'와 'Base Case'에 대해 다룬 적이 있습니다. 이 문제의 경우, 기본 케이스 (Base Case)는 n이 0이나 1일 때이며, 각 경우 0 또는 1을 반환합니다. 반면 n이 0 또는 1이 아닐 경우, 재귀 케이스 (Recursive Case)에 들어서는데, 이 경우 fibonacci(n-1)+fibonacci(n-2)를 반환하여 'fibonacci' 함수를 재참조합니다. 이렇게 간단한 함수를 반복함으로써, 시간만 있으면 모든 피보나치 수를 구할 수 있습니다.

  아래는 백준 웹사이트 "10872번 - 팩토리얼" 문제풀이입니다.

 

[백준/C언어] 10872번 - 팩토리얼

백준 웹사이트 "10872번 - 팩토리얼" 문제풀이입니다. 언어는 C언어입니다. (제출 언어: C99) 문제 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하

loding.tistory.com

 

반응형