본문 바로가기

Basic/자료구조,알고리즘

재귀의 활용(피보나치 수열)

반응형

피보나치 수열은 재귀적인 형태를 띠는 대표적인 수열로서 다음과 같이 전개가 된다

 

앞의 수 두개를 더해서 현재의 수를 만들어가는 수열이다. 

 

그래서 처음 0과 1이 주어진 상태에서 다음의수 1 만들어 가게 된다.

 

 

수열의 1번째 위치의 값은 0을 반환

 

수열의 2번째 위치의 값은 1을 반환

 

3번째 이상 n번째 부터는 n-1번째+n-2번째의 값의 합을 반환 한다.

 

이를 코드로 구현해보자

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class b_03_FibonacciFunc 
{
    static int Fibo(int n) 
    {
        if(n==1)//수열의 1번째 위치의 값은 0을 반환
            return 0;
        else if(n==2)//수열의 2번째 위치의 값은 1을 반환
            return 1;
        else//3번째 이상 n번째 부터는 n-1번째+n-2번째의 값의 합을 반환 한다.
            return Fibo(n-1)+Fibo(n-2);//자기자신을 다시 호출
    }
        public static void main(String[] args) 
        {
            int i;
            for(i=1; i<15; i++)
                System.out.printf("%d ", Fibo(i));
        }
}
cs

 

 

한번쯤은 참고 해볼만한 피보나치 함수의 호출 관계를 봐보자(  fibo(7)을 실행한다고 가정 ) 

 

 

 

 

 

반응형

'Basic > 자료구조,알고리즘' 카테고리의 다른 글

이진 탐색 알고리즘의 재귀적 구현  (0) 2018.11.28
이진 탐색 알고리즘의 재귀적 구현  (0) 2018.11.28
재귀의 활용(피보나치 수열)  (0) 2018.11.28
재귀(Recursive)  (0) 2018.11.28
재귀(Recursion)  (0) 2018.11.28