주어진 범위 안의 숫자들을 for나 while 같은 반복문 없이 출력해야 하는 상황이라면, 재귀(recursion)를 활용한 함수를 정의하면 간단하게 해결할 수 있습니다. 이 방식은 상위 범위 값부터 시작해 숫자를 하나 출력할 때마다 값을 1씩 감소시키며 자기 자신을 다시 호출하는 원리로 동작합니다.
예제 코드
def print_nums(upper_num):
if(upper_num>0):
print_nums(upper_num-1)
print(upper_num)
upper_lim = 6
print("상한값은 :")
print(upper_lim)
print("출력되는 숫자들 :")
print_nums(upper_lim)실행 결과
상한값은 : 6 출력되는 숫자들 : 1 2 3 4 5 6
코드 설명
print_nums라는 이름의 재귀 함수가 정의됩니다.함수는 먼저 매개변수로 받은 상한값이 0보다 큰지 검사합니다.
조건이 참이면, 자기 자신을
upper_num - 1인자와 함께 다시 호출합니다.재귀 호출이 가장 깊은 지점(숫자 1)에 도달한 뒤 되돌아오면서 각 숫자가 오름차순으로 화면에 출력됩니다.
매번 호출될 때마다 상한값이 1씩 감소하며, 값이 0에 도달하면 재귀가 종료됩니다.
함수 외부에서 상한값(
upper_lim = 6)이 정의되고, 이 값을 인자로 전달해 함수를 호출합니다.최종 결과가 콘솔에 출력됩니다.
참고 사항
재귀 방식은 코드가 간결하다는 장점이 있지만, 파이썬은 기본적으로 최대 재귀 깊이(약 1000회)가 제한되어 있습니다. 따라서 이 방법은 범위가 작거나 중간 정도일 때 적합하며, 매우 큰 숫자 범위를 처리해야 한다면 sys.setrecursionlimit()으로 한도를 조정하거나 반복문 방식을 사용하는 것이 좋습니다.