재귀 함수를 만들고 팩토리얼을 구해보자.

#include<stdio.h>

int	factorial(int num)
{ 
  if(num<=0 ) return 0;
  if(num==1) return 1;
  return num*factorial(num-1);
}
int main(void){
  int num,result ;
  scanf("%d",&num);
  result = factorial(num);
  printf("factorial(%d) : %d",num,result);
}

결과 값은 다음 그림과 같다.. 재귀 함수는 함수가 결과를 반환하기 전에 자기 자신을 다시 실행하는 방식이다. 스택함수에서 반복하기 때문에 반드시 종료 조건을 넣어야 한다. 스택 함수는 한계가 명확하기 때문이다. 용량이 1mb 라서 넉넉한 공간이 아니다. 스택함수는 이해하기가 어려울 수 있다. 한 번에 실행하는 방식이 아니고 스택 함수에 차곡 차곡 쌓아 둔 자료를 이후에 꺼내서 활용한다. 그래서 느리다. 

재귀 함수는 트리구조에서 사용한다. 폴더 구조를 보면 폴더 안에 다시 폴더가 있다. 이런 구조에 재귀 함수를 사용한다. 정확하게는 폴더를 직접 구현해 본 적이 없어서 이론적으로만 알고 있다. 

장점 : 코드를 줄일 수 있다. 

단점 : 용량이 작다. 느리다. 이해하기 어려울 수 있다. 

 

팩토리얼 함수 결과, 10팩토리얼 결과값 출력 

 

Posted by 뭔가느낌이
,