함수

FastCampus All-In-One 패키지 중 C/C++ 수업을 듣고 정리한 자료입니다.

실행환경: Windows 10

학습목표

  • 함수의 개념을 이해하고 사용 방법을 숙지
  • 함수의 정의와 호출 방법을 알아보자
  • 재귀함수에 대해 공부

함수


반환자료형 함수명 (매개변수) {
    // 수행될 명령어
    return 반환할 ;
}
  • 특정한 기능에 대해 소스코드가 반복되는 것을 줄이도록 해준다
  • 매개변수반환할 값은 경우에 따라 없을수도 있다.
    • 없을때의 자료형은 void

함수 예시


더하기 함수 만들기

#include <stdio.h>

int add(int a, int b) {
    return a + b;
}

int main(void) {
    printf("%d\n", add(10, 20));
    system("pause");
}

결과

30
계속하려면 아무 키나 누르십시오 . . .

사칙연산 함수 만들기

#include <stdio.h>

void calculator(int a, int b) {
    printf("%d + %d = %d\n", a, b, a + b);
    printf("%d - %d = %d\n", a, b, a - b);
    printf("%d * %d = %d\n", a, b, a * b);
    printf("%d / %d = %d\n", a, b, a / b);
    printf("\n");
}

int main(void) {
    calculator(10, 3);
    calculator(15, 2);
    calculator(18, 4);
    system("pause");
}

결과

10 + 3 = 13
10 - 3 = 7
10 * 3 = 30
10 / 3 = 3

15 + 2 = 17
15 - 2 = 13
15 * 2 = 30
15 / 2 = 7

18 + 4 = 22
18 - 4 = 14
18 * 4 = 72
18 / 4 = 4

계속하려면 아무 키나 누르십시오 . . .

무한 루프(Infinite Loop)


for (초기화; 조건; 반복  명령어) {
    // 조건이 항상 참(true)인 경우 무한 루프 발생
}
  • 종료 조건 없이 한없이 반복되는 반복문
  • 일부러 발생시키는 경우도 있으나 보통은 개발자의 실수
  • 컴퓨터의 성능상 좋지 않기 때문에 하지 않는것이 좋음

재귀 함수


  • 자기 자신을 포함하는 함수
  • 기본적으로 자기 자신을 계속 불러냄
  • 따라서, 반드시 재귀 종료 조건이 필요

While문 예시


재귀 함수를 이용한 팩토리얼

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int factorial(int a) {
    if (a == 1) return 1;
    else return a * factorial(a - 1);
}
int main(void) {
    int n;
    printf("n 팩토리얼을 계산합니다. ");
    scanf("%d", &n);
    printf("%d\n", factorial(n));
    system("pause");
}
  • f(5)인 경우
  • 5 x f(4) -> 4 x f(3) -> 3 x f(2) -> 2 x f(1) -> 1

결과

n 팩토리얼을 계산합니다. 5
120
계속하려면 아무 키나 누르십시오 . . .

요약


  • C언어는 함수로 시작해서 함수로 끝나는 언어

  • 재귀함수는 반복적으로 자기 자신을 불러내므로

    경우에 따라 연산 횟수가 급격히 증가할 수 있다.

Reference


패스트캠퍼스 컴퓨터공학 올인원 패키지

Comments