이 프로그램은 사용자로부터 밑(base)이 될 숫자와 지수(exponent)를 입력받습니다. 그런 다음 재귀 함수인 rpower()가 이 두 값을 인자로 받아 처리합니다. 이 함수는 숫자를 재귀적으로 반복해서 곱함으로써 최종 거듭제곱 결과를 반환합니다.
재귀의 동작 원리
재귀 함수는 자기 자신을 호출하는 방식으로 문제를 해결합니다. 여기서 rpower()의 로직은 다음과 같습니다.
- 기저 조건(Base Case): 지수(idx)가 1이면 더 이상 곱할 필요가 없으므로 num을 그대로 반환합니다.
- 재귀 조건(Recursive Case): 지수가 1보다 크면 num에
rpower(num, idx-1)의 결과를 곱해 반환하며, 지수가 1에 도달할 때까지 자기 자신을 계속 호출합니다.
예제 코드
def rpower(num,idx):
if(idx==1):
return(num)
else:
return(num*rpower(num,idx-1))
base=int(input("Enter number: "))
exp=int(input("Enter index: "))
rpow=rpower(base,exp)
print("{} raised to {}: {}".format(base,exp,rpow))실행 결과
다음은 프로그램 실행 예시입니다.
Enter number: 10 Enter index: 3 10 raised to 3: 1000
위 실행 예시에서 볼 수 있듯이, 사용자가 밑으로 10을, 지수로 3을 입력하면 프로그램은 10 × 10 × 10 = 1000을 계산하여 출력합니다. 즉, 재귀 호출이 지수 횟수만큼 반복되면서 매번 num을 곱하는 구조입니다.
참고 사항
이 방식은 재귀의 기본 개념을 학습하기에 좋지만, 지수가 매우 클 경우 파이썬의 재귀 호출 깊이 제한(기본값 약 1000회)에 도달할 수 있습니다. 실무에서는 내장 연산자 **나 pow() 함수를 사용하는 것이 더 효율적입니다.