본문 바로가기

개발/C&C++

(C/C++ 속성 정리) 19일 차 : 재귀 함수 및 2차원 배열

안녕하세요 넬다이 입니다.

 

오늘 정리할 내용은 재귀 함수 및 2차원 배열입니다.

 

오늘 내용은 별다르게 어려운 내용은 없으니 너무 긴장 마시고 파이팅해주세요~

 


재귀 함수

recursive call 이라고도 불리며 재귀 함수는 코드의 양을 줄일 수 있다는 장점이 있다.
하지만 코드를 파악하기가 어렵고 디버깅이 힘들고 재귀 함수는 반복문보다 속도가 느리다.
stack 영역의 메모리가 낭비가 되는데
왜냐하면 마지막 call 이 끝나기 전까지 계속해서 메모리를 할당하고 있기 때문이다.
기본적으로 재귀 함수는 무한이라는 개념이 있기 때문에 사람들이 봤을 때는 직관적이지 않는 단점도 있다.

 

자 그러면 재귀 함수와 반복문을 코드로써 확인해보도록 하겠습니다

//재귀 함수 호출을 통한 팩토리얼 연산함수
int Factorial(int iFact)
{
	if(iFact == 1)
		return 1;
	else
		return iFact * Factorial(iFact - 1);
}

위 코드는 팩토리얼 함수를 재귀로써 구현을 한 코드입니다.

int Factorial(int iFact)
{
	if(iFact == 1)
		return 1;
	else
	{
		int iValue = 1;
		for(int i = 1; i < iFact; ++i)
		{
			iValue *= i;
		}
	}
	return iValue;
}

자 위에 코드는 팩토리얼을 반복문으로 구현을 해본 함수입니다.

 

제가 위에서 설명드린 것처럼 무엇이 읽기 편한 코드일까요??? 저는 반복문이 한눈에 들어와서 저만 편하다고 생각하는지는 잘 모르겠지만 후자가 한눈에 들어온다고 생각이 들어요.

 

이처럼 재귀 문은 코드량을 확실하게 획기적으로 줄여주지만 그만큼 가독성이 떨어진다는 점 명심하시고 사용하면 되겠습니다.

 


2차원 배열

 

2차원 배열을 기존에 배웠던 배열과 같은 역할을 한다.

배열이 있고 그 배열이 여러 개라는 뜻이다 쉽게 이해하기 위해서 코드로 설명드립니다.

	int iArray[3][4] = 
	{
		{1, 2, 3, 4},
		{5, 6, 7, 8},
		{9, 10, 11, 12}
	};

2차원 배열은 이런 형태라고 생각하시면 됩니다.

 

보시면 4개의 배열이 3개가 있는 것을 볼 수 있습니다.

 

간단하게 사용을 하자면은 

#include <iostream>

using namespace std;

void	SumTotal(int iArray[][4], int iColumn);

void main(void)
{
	int		iArray[3][4] = 
	{
		{1, 2, 3, 4},
		{5, 6, 7, 8},
		{9, 10, 11, 12}
	};

	SumTotal(iArray, 3);

}	
void SumTotal(int iArray[][4], int iColumn)
{
	for(int i = 0; i < iColumn; ++i)
	{
		for(int j = 0; j < 4; ++j)
		{
			cout << iArray[i][j] << endl;
		}
	}
}

 

이런 식으로 사용이 가능합니다.

 

 


자 오늘은 재귀 함수 및 2차원 배열에 대해서 알아봤는데요

재귀 함수는 오늘 처음 배우신 내용이지만 2차원 배열은 기존 배웠던 내용에서 확장된 내용이라

그렇게 설명할 게 없는 거 같아요.

헷갈리시는 분이 계시다면은 기존 배열에 가셔서 한번쯤 다시 정독하는 것도 나쁘지 않을 것이라고 생각합니다.

 

자 그럼 오늘 강의도 봐주신 여러분 감사합니다~.

 

[개발/C&C++] - (C/C++ 속성 정리) 18일 차 : 리스트를 이용해서 성적표 만들기 및 설계

[개발/C&C++] - (C/C++ 속성 정리) 17일 차 : 성적표 만들기 및 설계

[개발/C&C++] - (C/C++ 속성 정리) 16일 차 : 메모리 관련 함수

[개발/C&C++] - (C/C++ 속성 정리) 15일 차 : 포인터와 동적 할당

[개발/C&C++] - (C/C++ 속성 정리) 14일 차 : 함수의 사용방법