c언어 기초

재귀 함수

달달고냥 2017. 3. 28. 17:47

1. 재귀 함수의 기본적 이해

자기 자신을 다시 호출하는 형태의 함수


#include <stdio.h>

 

void Recursive(void)

{

   printf("Recursive Call! \n");

   // Recursive();

}

 

int main(void)

{

   Recursive();

   return 0;

}


* 탈출 조건의 필요성

무한 재귀 호출을 피하기 위해서




* 탈출 조건의 이해


#include <stdio.h>


void Recursive(int n)

{

    printf("Recursive Call! \n");

    if(n==1)

        return;

    Recursive(n-1);

}


int main(void)

{

    int a=2;

    Recursive(a);

    return 0;

}



* 재귀 함수 Design 사례
팩토리얼(factorial) 계산을 위한 알고리즘

 


 




알고리즘을 코드로 옮기기 위한 pseudo code와 C 코드

// 시작 조건 : n은 0 이상이다.

시작(START) : f(n) 호출

     1. 만약에 n이 0이면 1을 반환 

     2. 그렇지 않다면 n  f(n-1)을 반환.

끝(END)


 int f(int n)

{

    if (n==0)

        return 1;

    else

        return n*f(n-1);

}