본문 바로가기
Language/C언어

C019_재귀 함수 사용하기

by OdOp 관리자 2023. 9. 21.
SMALL

재귀함수는 재귀호출을 사용하여 이루어집니다. 

재귀호출(recursive call) : 함수 안에서 함수 자기 자신을 호출하는 방식

 

재귀 함수

#include <stdio.h>

void hello(int count)
{
    if (count <= 0)  //탈출 조건을 만듦. count가 0이하면
        return;  //다시 hello 함수를 호출하지 않고 끝냄
    printf("Hello, world! %d\n", count);
    hello(--count);  //hello 함수 안에서 hello 함수 호출 
}

int main()
{
    hello(5);
    return 0;
}

재귀 함수의 가장 중요한 부분은 탈출할 부분을 명확하게 만드는 것입니다. 

저는 사용자가 입력한 수만큼 'Hello, world!'를 출력할 것입니다. 따라서 탈출 조건을 0 이하로 만들었습니다. 사용자가 0 혹은 그 이하의 입력 값을 입력했을 때 바로 종료하고 그 외의 정수를 입력했을 때 원하는 그 수만큼 출려하게 해 줍니다. 

 

factorial

#include <stdio.h>

int factorial(int n)
{
    if (n <= 1)  //n이 1보다 작거나 같을 때
        return 1;  //1을 반환하고 재귀호출을 끝냄
    return n * factorial(n - 1);  //n과 factorial 함수에 n-1을 넣어서 반환된 값을 곱함
}

int main()
{
    printf("%d", factorial(5));
    return 0;
}

factorial은 1에서 시작하여 어떤 범위에 있는 모든 정수를 곱하는 것을 의미합니다. 

예를 들어 5! = 1 x 2 x 3 x 4 x 5가 됩니다. 이때 5! = 5 x 4!가 됩니다. 

그렇게 되면 1! = 1 x 0!이 됩니다.  따라서 0!은 1이 됩니다. 

이렇게 되면 재귀 함수로 쉽게 factorial을 구현할 수 있습니다. 

LIST

'Language > C언어' 카테고리의 다른 글

C021_파일 쓰고 읽기  (0) 2023.09.23
C020_함수 포인터  (0) 2023.09.22
C018_비트 연산  (0) 2023.09.20
C017_함수, 가변인자 사용하기  (0) 2023.09.19
C016_함수, 매개변수 사용  (0) 2023.09.18