C언어에서 for나 while 같은 반복문을 사용하지 않고도 1부터 100까지의 숫자를 출력할 수 있습니다. 대표적인 방법으로는 재귀 함수(recursive function)를 활용하는 방법, goto 문을 사용하는 방법, 그리고 main() 함수 외부에 별도의 함수를 정의하여 호출하는 방법이 있습니다.
그중 가장 널리 쓰이는 재귀 함수를 이용한 예제를 살펴보겠습니다.
예제 코드
#include<stdio.h>
int number(int val) {
if(val<=100) {
printf("%d\t",val);
number(val+1);
}
}
int main() {
int val = 1;
number(val);
return 0;
}실행 결과
12345678910111213 14151617181920212223242526 27282930313233343536373839 40414243444546474849505152 53545556575859606162636465 66676869707172737475767778 79808182838485868788899091 9293949596979899100
코드 설명
위 예제에서는 매개변수 val을 받는 number라는 함수를 정의했습니다. 이 함수의 동작 원리는 다음과 같습니다.
val이 100 이하인지 조건을 검사합니다.- 조건이 참이면 현재 값을 출력한 후, 자기 자신을 호출하면서
val을 1 증가시킵니다. val이 100을 초과하면 재귀 호출이 멈추고 함수가 종료됩니다.
main() 함수에서는 val을 1로 초기화한 뒤 number 함수를 호출하여 전체 출력 과정을 시작합니다.
if(val<=100) {
printf("%d\t",val);
number(val+1);
}이처럼 재귀 호출을 활용하면 반복문 없이도 특정 범위의 숫자를 손쉽게 출력할 수 있습니다. 다만 재귀 호출은 깊이가 깊어질 경우 스택 오버플로우가 발생할 수 있으므로, 호출 횟수가 많아지지 않도록 주의해야 합니다.