자기 자신을 다시 호출하는 함수를 의미
def recursive_function() :
print('재귀 함수를 호출합니다.')
recursive_function()
recursive_function()
def recursive_function(i) :
# 100번째 호출을 했을 때 종료되도록 종료 조건 명시
if i == 100 :
return
print(i, '번째 재귀함수에서', i + 1, '번째 재귀함수를 호출합니다.')
recursive_function(i + 1)
print(i, '번째 재귀함수를 종료합니다.')
recursive_function(1)
# 반복적으로 구현한 n!
def factorial_iterative(n) :
result = 1
# 1부터 n까지의 수를 차례대로 곱하기
for i in range(1, n + 1) :
result *= i
return result
# 재귀적으로 구현한 n!
def factorial_recursive(n) :
if n <= 1 : # n이 1 이하인 경우 1을 반환
return 1
# n! = n * (n - 1)!를 그대로 코드로 작성하기
return n * factorial_recursive(n - 1)
# 각각의 방식으로 구현한 n! 출력 (n = 5)
print('반복적으로 구현:', factorial_iteractive(5))
print('재귀적으로 구현:', factorial_recursive(5))
# 실행 결과
반복적으로 구현: 120
재귀적으로 구현: 120
두 개의 자연수에 대한 최대공약수를 구하는 대표적인 알고리즘으로는 유클리드 호제법이 있다
예시: GCD(192, 162)
단계 | A | B |
---|---|---|
1 | 192 | 162 |
2 | 162 | 30 |
3 | 30 | 12 |
4 | 12 | 6 |
def gcd(a, b) :
if a % b == 0 :
return b
else :
return gcd(b, a % b)
print (gcd(192,162))
# 실행 결과
6