1. 재귀 호출(recursive call)
재귀 호출(recursion)은 함수가 자기 자신을 다시 호출하는 기법을 말합니다. 재귀 호출을 사용하면 복잡한 문제를 간단하고 우아하게 풀 수 있지만, 잘못 사용하면 프로그램의 성능에 문제가 발생할 수 있습니다.
무한 재귀: 재귀 함수의 기본 케이스가 없거나 잘못되면 함수는 무한히 자신을 호출하게 됩니다. 이렇게 되면 프로그램은 결국 스택 오버플로우 에러를 발생시키게 됩니다.
성능: 재귀 호출은 간단하고 우아하게 보일 수 있지만, 반복문을 사용한 코드보다 더 많은 메모리와 시간을 소모할 수 있습니다. 특히 파이썬에서는 재귀 호출에 제한이 있으므로 (기본적으로 1000번) 큰 입력값에 대해 재귀 함수를 사용하면 문제가 발생할 수 있습니다.
메모리 사용: 모든 재귀 호출은 호출 스택에 저장됩니다. 따라서 많은 재귀 호출이 발생하면 메모리 사용량이 증가하게 됩니다.
가독성: 일부 사람들에게는 재귀 코드가 복잡하게 느껴질 수 있습니다.
def factorial(num):
if num > 1:
return num * factorial(num - 1)
else:
return num
for num in range(5):
print(factorial(num))
def palindrome(string):
if len(string) <= 1:
return True
if string[0] == string[-1]:
return palindrome(string[1:-1])
else:
return False
# 내 풀이
def test(n):
if n % 2 == 1 and n != 1:
print(n)
return test(3*n +1)
elif n % 2 == 0:
print(n)
return test(n/2)
else:
print(n, '끝')
'Python > 개념' 카테고리의 다른 글
2024-06-03 30. 파이썬 비동기 (0) | 2024.06.03 |
---|---|
2024_06-03 29. 데이터베이스와 MongoDB (0) | 2024.06.03 |
2024-03-22 과제 디렉토리 관리 프로그램 만들기 (0) | 2024.03.22 |
2024-03-22 주피터 노트북 설치, 디렉토리 관리 프로그램 (0) | 2024.03.22 |
2024-03-21 파일 입출력 라이브러리 (0) | 2024.03.21 |