목차/차례
return n factorial(n - 1)
위 코드에서 볼 수 있듯이, 재귀적 접근은 문제의 본질을 그대로 코드로 표현하기에 매우 직관적이다. 하지만 재귀적 알고리즘은 재귀 호출이 반복되면서 스택 메모리를 사용하므로, 문제의 크기가 커질수록 메모리 소모가 커진다는 단점이 있다. 특히, 재귀 깊이가 깊어지면 스택 오버플로우(Stack overflow)와 같은 문제가 발생할 수 있다.
반면, 비재귀적 알고리즘은 반복문을 사용하여 문제를 해결하는 방식이다. 비재귀적 알고리즘은 메모리를 적게 사용하며, 재귀 호출로 인한 스택 오버플로우를 방지할 수 있다. 같은 팩토리얼 문제를 반복문으로 구현한 비재귀적 알고리즘은 다음과 같다.
def factorial(n):
if n 1:
return 1
else:
본문/내용
return n factorial(n - 1)
이 방식은 재귀 호출을 사용하지 않기 때문에 메모리 사용이 더 효율적이다. 하지만 경우에 따라서는 코드가 복잡해질 수 있으며, 문제를 해결하는 논리를 직관적으로 표현하기 어려울 수 있다.
3. 재귀적 알고리즘의 장점과 한계
재귀적 알고리즘의 가장 큰 장점은 문제를 단순화할 수 있다는 점이다. 특히, 복잡한 문제를 더 작은 하위 문제로 분할하고, 이를 해결함으로