728x90

재귀함수의 호출

void recursive()
{
  printf("Recursive call!\n");
  recursive();
}

- recursive안에 다시 recursive함수를 호출하고 또 호출하고.. 이런식으로 반복

- recursive 함수가 호출되면 recursive 복사본을 만들고 또 그 복사본에서 다시 복사본을 만드는 식으로 진행

- 재귀함수의 탈출 조건을 명시하지 않으면 무한 반복 재귀호출이 됨

void recursive(int num)
{
  if (num <= 0)	return;		// 재귀함수 탈출 조건 설정
  printf("Recursive call! %d\n", num);
  recursive(num - 1);
}

int main(void)
{
    Recursive(3);
    return 0;
}

- 재귀함수의 디자인 사례 : 팩토리얼 함수

int Factorial(int n)
{
   if(n==0)		return 1;	// 탈출조건
   else
       return n * Factorial(n-1);	// 재귀
}

int main(void)
{
	printf("1! = %d \n", Factorial(1));
	printf("2! = %d \n", Factorial(2));
	printf("3! = %d \n", Factorial(3));
	printf("4! = %d \n", Factorial(4));
	printf("9! = %d \n", Factorial(9));
	return 0;
}

728x90

+ Recent posts