Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

재귀 함수를 이용해 주어진 별(*) 패턴 출력하기

이번 문제에서는 재귀(Recursion) 방식을 사용하여 주어진 패턴을 화면에 출력하는 방법을 알아봅니다.

재귀 함수란 자기 자신을 여러 번 호출하는 함수를 의미합니다. 하나의 프로그램 안에는 재귀 함수가 여러 개 존재할 수 있으며, 재귀를 활용하면 반복문 없이도 간결하게 문제를 해결할 수 있습니다. 다만 재귀 함수는 호출 구조가 복잡해질 수 있어 동작 방식을 정확히 이해하는 것이 중요합니다.

알고리즘

패턴을 출력하기 위해 두 개의 함수를 사용합니다. 하나는 별(*)을 한 줄에 출력하는 함수이고, 다른 하나는 줄바꿈과 함께 전체 패턴을 구성하는 함수입니다.

시작
1단계 -> 함수 int printpattern(int n)
    만약 n > 0 이라면
        printpattern(n-1) 호출
        * 출력
    종료
2단계 -> 함수 int pattern(int n)
    만약 n > 0 이라면
        pattern(n-1) 호출
    종료
    printpattern(n) 호출
    줄바꿈(\n) 출력
종료

예제 코드

아래는 위 알고리즘을 C 언어로 구현한 예제입니다.

#include <stdio.h>

// 한 줄에 별(*)을 재귀적으로 출력하는 함수
int printpattern(int n) {
    if(n > 0) {
        printpattern(n-1); // n을 줄여가며 재귀 호출
        printf("*");
    }
}

// 전체 패턴을 재귀적으로 구성하는 함수
int pattern(int n) {
    if(n > 0) {
        pattern(n-1); // 재귀적으로 패턴 출력
    }
    printpattern(n);  // n개의 별 출력
    printf("\n");     // 줄바꿈
}

int main(int argc, char const *argv[]) {
    int n = 7;
    pattern(n);
    return 0;
}

실행 결과

위 프로그램을 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.

*
**
***
****
*****
******
*******

동작 원리 설명

pattern(n) 함수는 먼저 자기 자신을 n-1로 호출하여 이전 단계의 패턴을 모두 출력한 뒤, 현재 단계에서 printpattern(n)을 통해 n개의 별을 한 줄로 출력하고 줄바꿈을 수행합니다. 이러한 재귀 호출 구조 덕분에 별도의 중첩 반복문 없이도 계단 형태의 삼각형 패턴을 깔끔하게 출력할 수 있습니다.