Taking baby-developer steps

7. 함수 - 함수/재귀함수 본문

CS 지식/C언어_basic

7. 함수 - 함수/재귀함수

Surin Lee 2021. 3. 19. 15:11

함수

함수는 입력을 받아 처리한 뒤에 출력하는 구조를 가진다. 

함수는 특정한 기능에 대한 소스코드가 반복되는 것을 줄이도록 해준다. 함수의 형태는 다음과 같다.

 반환자료형 함수명(매개변수){
 	//수행될 명령어
    return 반환할 값;
 }

위에서 반환 자료형에는 함수의 처리결과를 어떤 자료형으로 반환할지를 결정한다.

 

+애초에 다양한 프로그래밍 기법들은 프로그래밍을 얼마나 효과적으로, 생산성이 높게 할 수 있는지에 초점을 맞추고 있으므로, 함수 또한 이런 목적(불필요한 소스코드의 반복 제거)으로 사용 된다.

 

함수에서 매개변수와 반환할 값은 경우에 따라서 없을 수 있다. 매개변수 및 반환할 값이 없을 때의 자료형은 void이다.

+주로 void형으로 정의된 함수 여러개들이 묶여있는 것이 라이브러리이다.

 

함수를 이용하면 main함수가 매우 간결해지므로 전반적인 프로그램의 형태가 가독성이 높아진다.

 

재귀함수

재귀함수란 자기 자신을 포함하는 함수이다. 함수안에 자기를 불러내는 함수가 들어있는지를 확인함으로써 구분 가능하다. 따라서 반드시 재귀 종료조건이 필요하다.(정해주지 않으면 무한루프가 발생한다.)

재귀함수를 사용하면 반복문을 굳이 사용하지 않아도, 반복문과 유사한 형태를 구현할 수 있다.

 

예를 들어 팩토리얼을 계산하는 재귀함수를 정의하는 경우,

int factorial(int a){
	if(a==1) return 1;
    else return a*factorial(a-1);
}

if문을 통해 1이 되면 더이상 무한 반복이 일어나지 않게 1을 반환하는 것을 볼 수 있다.

 

요약

  1. C언어는 함수로 시작해서 함수로 끝나는 언어이다. 프로그램의 실행과 동시에 main함수가 실행되고, 또 main함수가 또 다른 함수를 불러오기 때문이다.
  2. 재귀함수는 반복적으로 자기 자신을 불러내므로, 경우에 따라서 연산 횟수가 급격히 증가할 수 있다. 즉, 소스 코드를 매우 짧게 만드는데 유용하지만, 무한루프가 생기지 않도록 재귀 종료조건을 설정해야한다.  
Comments