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

C 언어에서 반복문 없이 이름을 여러 번 출력하는 방법

문제 상황

C 프로그래밍 언어에서 for문, while문 같은 반복문이나 goto 문을 사용하지 않고 이름을 10번 출력하는 프로그램을 작성해 보겠습니다.

해결 방법

일반적으로 코드 블록을 조건이 거짓이 될 때까지 반복 실행하려면 반복문(loop)을 사용합니다. 하지만 반복문 없이도 재귀 함수(recursion)를 활용하면 동일한 결과를 얻을 수 있습니다.

재귀란 함수가 자기 자신을 다시 호출하는 기법으로, 종료 조건(base case)을 설정해 두면 반복문과 똑같이 동작하면서 호출 횟수를 제어할 수 있습니다.

예제 1: 재귀 함수 활용

아래 프로그램은 반복문이나 goto 문 없이 재귀 호출만으로 이름을 10번 출력합니다.

#include <stdio.h>
void printname(char* name,int count){
    printf("%03d : %s\n",count+1,name);
    count+=1;
    if(count<10)
        printname(name,count);
}
int main(){
    char name[50];
    printf("\nEnter you name :");
    scanf("%s",name);
    printname(name,0);
    return 0;
}

실행 결과

Enter you name :tutorialspoint
001 : tutorialspoint
002 : tutorialspoint
003 : tutorialspoint
004 : tutorialspoint
005 : tutorialspoint
006 : tutorialspoint
007 : tutorialspoint
008 : tutorialspoint
009 : tutorialspoint
010 : tutorialspoint

동작 원리

printname 함수는 이름을 한 번 출력한 뒤 count 값을 1 증가시키고, count가 10보다 작으면 자기 자신을 다시 호출합니다. 이 과정이 count가 10에 도달할 때까지 반복되며, 이때 재귀 호출이 멈추면서 총 10번의 출력이 완성됩니다.

예제 2: 일반적인 for문 사용 (비교용)

참고로, 아래는 반복문을 사용해 이름을 10번 출력하는 전통적인 방식입니다.

#include <stdio.h>
int main(){
    char name[50],i;
    printf("\nEnter you name :");
    scanf("%s",name);
    for(i=0;i<10;i++){
        printf("%s\n",name);
    }
    return 0;
}

실행 결과

Enter you name :TutorialsPoint
TutorialsPoint
TutorialsPoint
TutorialsPoint
TutorialsPoint
TutorialsPoint
TutorialsPoint
TutorialsPoint
TutorialsPoint
TutorialsPoint
TutorialsPoint

정리

반복문 없이 특정 작업을 여러 번 수행해야 할 때는 재귀 함수가 가장 대표적인 대안입니다. 다만 재귀는 호출 깊이가 깊어지면 스택 오버플로우가 발생할 수 있으므로, 반복 횟수가 많은 경우에는 일반적인 반복문을 사용하는 것이 안전합니다.