알고리즘 1(재귀호출)
본문 바로가기
  • 게임 개발자가 되고싶은 구구
게임 개발 공부/자료구조

알고리즘 1(재귀호출)

by gugu99 2022. 1. 2.
반응형

안녕하세요

 

게임개발자가 되기위해 공부하고있는 구구입니다.

오늘부터는 알고리즘에 대해 공부하려 합니다.


  • 재귀호출(Recursive call)

- 함수 내부에서 자기자신을 반복적으로 호출하는 것

- 반복 행위를 하는 함수 == 재귀함수

- 알고리즘 구현 시 유용

- 반복문보다 직관적

- 복잡한 문제 빠르게 해결가능

 

  • 재귀 호출 주의할 점

- 반드시 중지되어야 함(기저 조건, 종료 조건)

- 재귀호출로 문제를 해결할 수 있는지 고민(스택 오버플로우 주의)

 


  • 팩토리얼(Factorial)
  • 정규식

f(n) = n*(n-1) (단, f(1) = 1)

5! = 5*4*3*2*1 = 120

 

  • 코드

 

static int FuncFactorial(int nNumber)
{
        int nResult = 0;

        if (nNumber == 1)
        {
            nResult = 1;
        }
        else
        {
            nResult = nNumber * FuncFactorial(nNumber - 1);
        }

        return nResult;
}

 


  • 피보나치 수열
  • 정규식

f(n) = f(n-1)+f(n-2) (단, n>2, f(1) = 1, f(2) = 1)

 

 

  • 코드

static int FuncFibonacci(int nSequence)
{
        int nResult = 0;

        if (nSequence == 1 || nSequence == 2)
        {
            nResult = 1;
        }
        else
        {
            nResult = FuncFibonacci(nSequence - 1) + FuncFibonacci(nSequence - 2);
        }
        return nResult;
}

 


  • 정렬의 안정적 특성

- 정렬되지 않은 상태에서 같은 키값(즉 수치가 같은 데이터)을 가진 원소의 순서가 정렬후에도 유지되는지 확인

 

 

 

 

 

오늘은 여기까지 하도록 하겠습니다.

반응형

댓글