C언어 재귀적함수 응용
이번에 소개해드릴 내용은 재귀적 함수입니다.
재귀적이란 계속 자기자신을 호출한다고 생각하시면 됩니다.
사용자가 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;
}