기타지식들/알고리즘

피보나치수열 C언어로 구현하기

원원 2021. 1. 21. 22:25

안녕하세요. 오늘은 피보나치수열을 C언어로 구현해보겠습니다




피보나수열의규칙

1) 1로 시작한다

2) 처음에 똑같은 두 수가 반복된다

3) 연속하는 두 수의 합이 다음에 나타난다

4) 수들이 홀수,홀수,짝수로 이루어져 있다


0 -> 1 -> 1 -> 2 -> 3 -> 5 -> 8 -> 13 -> 21..........




코드로 구현하기

1) f(0) = 0

2) f(1) = 1

3) f(2) = 1

4) f(n) = f(n-2) + f(n-1)    *n>=2 ,



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
 
int f(int n)
{
    if(n==0)
        return 0;
    else if(n<=2)
        return 1;
    else
        return f(n-2) + f(n-1);
}
 
 
int main(void) {
    printf("%d \n",f(10));
    


10번째 줄에서 자기 자신을 호출함으로써, 문제를 해결합니다

이때 중요한 건 자기 자신을 호출할 때, 끝나는 조건이 있어야 한다는 것입니다


예시)

f(6) = f(5) + f(4) -> 5 + 3 = 8


f(5) = f(4) + f(3) -> 3 + 2 = 5


f(4) = f(3) + f(2) -> 2 + 1 = 3


f(3) = f(2) + f(1) -> 1 + 1 = 2