IT기초/C 언어

[C언어] 재귀함수 사용법 - 예제 코드 포함

ITtechRoy 2023. 9. 6. 12:57
728x90
반응형

C 언어로 재귀 함수 활용하기

이 예제에서는 C 언어에서 재귀 함수를 정의하고 활용하는 방법을 알아보겠습니다. 재귀 함수는 함수 내에서 자기 자신을 호출하는 것으로, 문제를 작은 부분으로 나누어 해결할 수 있을 때 유용합니다.

예제 1: 팩토리얼 계산

재귀 함수를 사용하여 팩토리얼을 계산하는 C 프로그램의 예제 코드입니다:

#include 

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

int main() {
    int num = 5;
    int result = factorial(num);

    printf("%d의 팩토리얼: %d\n", num, result);

    return 0;
}
    

예제 2: 피보나치 수열

재귀 함수를 사용하여 피보나치 수열을 계산하는 C 프로그램의 예제 코드입니다:

#include 

int fibonacci(int n) {
    if (n <= 0) {
        return 0;
    } else if (n == 1) {
        return 1;
    } else {
        return fibonacci(n - 1) + fibonacci(n - 2);
    }
}

int main() {
    int num = 6;
    int result = fibonacci(num);

    printf("%d번째 피보나치 수: %d\n", num, result);

    return 0;
}
    

예제 3: 거듭제곱 계산

재귀 함수를 사용하여 거듭제곱을 계산하는 C 프로그램의 예제 코드입니다:

#include 

double power(double base, int exponent) {
    if (exponent == 0) {
        return 1;
    } else {
        return base * power(base, exponent - 1);
    }
}

int main() {
    double base = 2.0;
    int exponent = 3;
    double result = power(base, exponent);

    printf("%lf의 %d 거듭제곱: %lf\n", base, exponent, result);

    return 0;
}
    

예제 4: 숫자 합 계산

재귀 함수를 사용하여 숫자 합을 계산하는 C 프로그램의 예제 코드입니다:

#include 

int sum(int n) {
    if (n <= 0) {
        return 0;
    } else {
        return n + sum(n - 1);
    }
}

int main() {
    int num = 4;
    int result = sum(num);

    printf("1에서 %d까지의 합: %d\n", num, result);

    return 0;
}
    

예제 5: 이진 탐색

재귀 함수를 사용하여 정렬된 배열에서 이진 탐색을 수행하는 C 프로그램의 예제 코드입니다:

#include 

int binarySearch(int arr[], int left, int right, int target) {
    if (left <= right) {
        int mid = (left + right) / 2;
        if (arr[mid] == target) {
            return mid;
        } else if (arr[mid] < target) {
            return binarySearch(arr, mid + 1, right, target);
        } else {
            return binarySearch(arr, left, mid - 1, target);
        }
    }
    return -1;
}

int main() {
    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    int target = 5;
    int size = sizeof(arr) / sizeof(arr[0]);
    int result = binarySearch(arr, 0, size - 1, target);

    if (result != -1) {
        printf("%d는 배열에서 %d번째 위치에 있습니다.\n", target, result);
    } else {
        printf("%d는 배열에서 찾을 수 없습니다.\n", target);
    }

    return 0;
}
    
728x90
반응형