C/기초

반복 함수와 재귀함수

컴공 윤서혜 학습일기 2019. 7. 25. 17:11

반복 함수는 단순히 while혹은 for 문법을 이용하여 특정한 처리를 반복하는 방식으로 문제를 해결하는 함수이다. 반면에 재귀 함수는 자신의 내부에서 자기 자신을 스스로 호출함으로써 재귀적으로 문제를 해결하는 함수이다. 재귀 함수는 경우에 따라서는아주 간결하고 직관적인 코드로 문제를 해결할 수 있게 해주지만 때에 따라서는 심각한 비효율성을 낳을 수 있기 때문에 알고리즘을 작성할 떄 유의할 필요가 있다.

 

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif

#include <stdio.h>

// 숫자 피라미드 출력하기 (반복함수를 이용해서 숫자 피라미드를 출력한다.)
// 반복함수같은 경우에는 오직 for 문과 while문으로 구성이 된다.

int print(int a)
{
	int i, j;
	for (i = 0; i < a; i++)
	{
		for (j = 0; j <= i; j++)
		{
			printf("%d", j + 1);
		}
		printf("\n");
	}
}

int main()
{
	int a;
	printf("원하는 정수를 입력해주세요 : ");
	scanf("%d", &a);
	print(a);
	return 0;
}

 

 

 

이제는 재귀함수를 이용해서 문제를 푼것을보여주겠다.

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif

#include <stdio.h>

// 특정한 문자열을 재귀함수를 통해서 반복 출력하게 한다.
// 재귀함수 (Recursive Function);

void print(int count)
{
	if (count == 0)
	{
		return;
	}

	else
	{
		printf("문자열을 출력합니다,\n");
		print(count - 1);
	}
}

int main()
{
	int x = 10;
	print(x); //함수의 매개변수를 사용하는 방법이다.
	return 0;
}
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif

#include <stdio.h>

// 특정한 문자열을 재귀함수를 통해서 반복 출력하게 한다.
// 재귀함수 (Recursive Function);

void print(int count)
{
	if (count == 0)
	{
		return;
	}

	else
	{
		printf("문자열을 출력합니다,\n");
		print(count - 1);
	}
}

int main()
{
	int x;
	printf("원하는 숫자를 입력해주세요 : ");
	scanf("%d", &x);
	print(x);
	return 0;
}

자기 함수안에 자기가 또 들어가 있는 형태가 재귀함수라고 할 수 있다.

'C > 기초' 카테고리의 다른 글

배열이란  (0) 2019.07.25
조합이란  (0) 2019.07.25
사용자 정의 함수  (0) 2019.07.25
기본 입출력 추가 설명  (0) 2019.07.25
기본 입출력  (0) 2019.07.25