easy software

C언어 재귀적함수 응용 본문

C언어/변수와 함수

C언어 재귀적함수 응용

JAVA 웹개발자 2015. 1. 11. 18:49

이번에 소개해드릴 내용은 재귀적 함수입니다.

 

재귀적이란 계속 자기자신을 호출한다고 생각하시면 됩니다.

 

사용자가 10을 입력하면 2의 10승인 1024를 출력하도록 할텐데요, 솔직히 반복문으로 쉽게 할 수 있는 예제이지만 재귀적함수를 사용해봄으로써 이해를 돕기 위해 함수로 구현했습니다.

 

재귀적함수는 많은 분들이 어려워하는 개념입니다. 저도 마찬가지구요.

 

하지만, 프로그래머로써 반드시 이해하고 넘어가야 하는 개념이라고 생각합니다.

 

주석을 아주 꼼꼼하게 달아놨고 그림설명도 있으니 잘 이해하시기 바랍니다.

 

#include <stdio.h>

 

//재귀함수로써 2의 n승을 계산해주는 함수
int RecursiveTest(int input){

 

//2의 0승은 0을 리턴
     if (input == 0)
          return input;

 

//1이상이면 재귀적호출
 //input == 0 조건으로 실행시 0만 계속 리턴하여 최종값이 0이됨
 //그래서 조건을 1까지만 주고 스택의 최상위의 값에 2를 곱해서 계산
 //이런식으로 하면 2의 1승도 바로 2를 출력시킬 수 있음
     else if (input == 1) 
          return input * 2;

 

 //input에 계산한 값을 저장하지 못하고 계속 재귀함수를 호출함
 //input에 계산한 값을 저장하는 시점은 input == 1이되어 값이
 //return될 때임. 순차적으로 수식을 끝내지 못했던 값들이 저장되기 시작함
     else
          input = RecursiveTest(input - 1) * 2;

 

 return input;
}

 

int main(void){

 

 int input;

 

 printf("정수 입력 : ");
 scanf_s("%d", &input);

 

 //수식을 계산할 재귀함수 호출
 printf("2의 %d승은 %d", input, RecursiveTest(input));

 

 return 0;
}

 

 

 

 

Comments