POST

c언어 재귀함수(순환함수) 이용하여 입력받은 숫자 차례로 출력하기

재귀함수란 자신의 함수 내에서 자기자신을 재 호출을 하는 것입니다.

함수가 완전히 종료 되지 않았지만 함수호출이 가능 하다.

하지만 다들 이해하기 힘들것이라 생각한다. 


아래 그림을 보자.

그림 처럼 함수를 재호출하게 되면 원본 함수에 대해 복사를 하여 새로운 해당이름의 함수가 생성 된다고 생각하면 될것 같다.


#include<stdio.h>

#pragma warning(disable:4996)

int again(int num); //함수원형의 선언

int main(void)

{

int num;//입력받을 변수

printf("정수를 입력하세요.\n");

scanf_s("%d", &num); // 변수값 입력

again(num); // 함수호출

return 0;

}

int again(int num)// 함수정의

{

if (num <= 0) // num의 값이 0이 될 경우 종료

return 0;

again(num / 10); // 10으로 나눈 몫을 가지고 함수를 재호출한다.

printf("%d ", num % 10);// 10으로 나눈 나머지의 값을 출력한다.함수가 먼저 호출이되면 미루어진다.


}

/*

again함수를 호출하여

num값을 again함수가 전달 받는다

num값을 비교하여 값이 조건에 만족할때까지 계속해서 재귀함수를 호출한다.

이후 num이 0보다 작거나 0이 되었을때는

차례대로 하나씩 반복되엇던 재귀함수가 반환되며 printf도 차례로하나씩 실행된다.


again함수내의 again함수를 다시호출하는 부분을 printf와 위치를 바꾸면 역순으로 출력이 된다.

ex) printf("%d ",num % 10);

again(num / 10);


*/