재귀(recursion) 기법을 활용하면 두 숫자의 곱을 반복문 없이 계산할 수 있습니다. 이 방식은 간단한 조건문과 재귀 호출만으로 구현됩니다.
재귀란 큰 문제를 작은 단위로 쪼개어 각 단위의 결과를 계산한 뒤, 이를 결합하여 최종 해답을 얻는 방법입니다. 곱셈의 경우, 덧셈을 반복하는 방식으로 곱을 구할 수 있습니다. 예를 들어 3 × 4는 4를 3번 더한 것과 같습니다.
예제 코드
아래는 재귀를 사용해 두 숫자의 곱을 계산하는 파이썬 프로그램입니다.
def compute_product(val_1, val_2):
if(val_1 < val_2):
return compute_product(val_2, val_1)
elif(val_2 != 0):
return(val_1 + compute_product(val_1, val_2 - 1))
else:
return 0
val_1 = int(input("Enter the first number... "))
val_2 = int(input("Enter the second number... "))
print("The computed product is: ")
print(compute_product(val_1, val_2))실행 결과
Enter the first number... 112 Enter the second number... 3 The computed product is: 336
코드 설명
- compute_product 함수 정의: 두 개의 숫자 값을 매개변수로 받는 함수를 정의합니다.
- 매개변수 교환: 첫 번째 값이 두 번째 값보다 작으면, 두 매개변수의 순서를 바꿔 함수를 다시 호출합니다. 이렇게 하면 재귀 호출 횟수를 줄여 성능을 높일 수 있습니다.
- 재귀 호출: 두 번째 값이 0이 아니라면, 첫 번째 값에 두 번째 값에서 1을 뺀 결과를 재귀 호출하여 더합니다. 즉, 곱셈을 덧셈의 반복으로 처리합니다.
- 종료 조건: 두 번째 값이 0이 되면 함수는 0을 반환하며 재귀가 종료됩니다.
- 입력 받기: 함수 외부에서 사용자로부터 두 개의 숫자를 입력받습니다.
- 결과 출력: 입력받은 두 값을 인자로 함수를 호출하고, 그 결과를 콘솔에 출력합니다.
동작 원리 이해하기
예를 들어 112 × 3을 계산하는 과정은 다음과 같이 진행됩니다.
- compute_product(112, 3) → 112 + compute_product(112, 2)
- compute_product(112, 2) → 112 + compute_product(112, 1)
- compute_product(112, 1) → 112 + compute_product(112, 0)
- compute_product(112, 0) → 0 (종료 조건)
따라서 최종 결과는 112 + 112 + 112 + 0 = 336이 됩니다.
주의 사항
파이썬에는 기본 재귀 깊이 제한(약 1000회)이 있으므로, 두 번째 숫자가 매우 큰 경우에는 이 방법 대신 반복문이나 곱셈 연산자(*)를 사용하는 것이 효율적입니다. 재귀는 알고리즘 학습과 문제 분해 능력을 기르는 데 유용한 기법입니다.