백준 웹사이트 "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
'코딩 > 백준 BOJ' 카테고리의 다른 글
[백준/C언어] 11729번 - 하노이 탑 이동 순서 (0) | 2022.02.04 |
---|---|
[백준/C언어] 2447번 - 별 찍기 - 10 (0) | 2022.02.03 |
[백준/C언어] 10872번 - 팩토리얼 (0) | 2022.02.01 |
[백준/C언어] 18108번 - 1998년생인 내가 태국에서는 2541년생?! (0) | 2022.01.31 |
[백준/C언어] 10926번 - ??! (0) | 2022.01.30 |