재귀함수란 자신의 함수 내에서 자기자신을 재 호출을 하는 것입니다.
함수가 완전히 종료 되지 않았지만 함수호출이 가능 하다.
하지만 다들 이해하기 힘들것이라 생각한다.
아래 그림을 보자.
그림 처럼 함수를 재호출하게 되면 원본 함수에 대해 복사를 하여 새로운 해당이름의 함수가 생성 된다고 생각하면 될것 같다.
#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);
*/
'C' 카테고리의 다른 글
c언어 사용자가 원하는 단부터 원하는 단까지 구구단 출력하기 (0) | 2014.04.28 |
---|---|
c언어 10진수 정수 입력 받아 16진수와 8진수로 출력하기 (0) | 2014.04.28 |
c언어 static 변수 (0) | 2014.04.28 |
c언어 함수와 전역변수를 사용하여 저축, 인출 하기 (0) | 2014.04.27 |
c언어 사용자가 원하는 만큼의 정수를 입력한후 합계 출력하기 (0) | 2014.04.27 |