프로그래밍/개발

재귀 팩토리얼 피보나치 구현

b1ackhand 2019. 1. 4. 01:45

2019.01.03.

 

먼저 책에서는 main함수에서 Recursive함수를 계속 호출하는것으로 재귀함수의 개념에 대해서

설명해 주었다. 재귀함수에서 중요한것은 탈출 조건이다.

 

 이를 응용하여 가장 기본적인 재귀함수 의 예시인

 

1) 팩토리얼

 

2) 피보나치 수열

 

3) 하노이 탑

 

들의 코드를 짜보고 구현해보고자 하였다.

 

 

 

먼저 팩토리얼은 다음과 같다

 

0! = 1

1! = 1

2! = 2

3! = 6

4! =24

 

직접 써보면서 반복되는 부분을 확인하고 반환하기 전에 자기자신을 곱해주는 형식으로 만들어주었다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#define _CRT_SECURE_NO_WARNINGS   
#include <stdio.h>  
 
 
int main()
{
    int num;
    int result;
 
    scanf("%d"&num);
 
    result = Factorial(num);
 
    printf("%d", result);
 
    return 0;
}
 
int Factorial(int n)
{
    if (n == 0)
    {
        return 1;
    }
    return n * Factorial(n - 1);
}
cs

 

관련된 문제로 https://www.acmicpc.net/problem/10872이 있어서 확인 할 수 있었다.

 

 

 

두번째로 피보나치 수열은 너무 많이 본 구조라서 쉽게 구현할 수 있었다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#define _CRT_SECURE_NO_WARNINGS   
#include <stdio.h>  
 
 
int main()
{
    int num;
 
    scanf("%d"&num);
 
    for (int i = 1;i < num+1;i++)
    {
        printf("%d  ", Fibo(i));
    }
 
    return 0;
}
 
int Fibo(int n)
{
    if (n == 1)
    {
        return 0;
    }
    else if (n == 2)
    {
        return 1;
    }
    else
    {
        return Fibo(n - 1+ Fibo(n - 2);
    }
}
cs

 

 

 

 

참고: 윤성우의 열혈 자료구조

 

'프로그래밍 > 개발' 카테고리의 다른 글

pwn 할때 쓰는 툴  (0) 2022.08.02
vim사용법  (0) 2022.07.22
추상 자료형과 리스트사용  (0) 2019.01.05
재귀 하노이탑  (0) 2019.01.04
순차 탐색, 이진 탐색 시간복잡도  (0) 2019.01.01