반응형
재귀함수는 재귀호출을 사용하여 이루어집니다.
재귀호출(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을 구현할 수 있습니다.
반응형
'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 |