Python의 재귀 이해: 그렇다면 직면하시겠습니까?
Oct 31, 2024 pm 06:10 PM재귀는 프로그래밍의 기본 개념이지만 때로는 다소 신비스러워 보일 수 있습니다. 이제 이것을 단순화하여 보기보다 쉽다는 것을 확인해 봅시다!
재귀란 무엇입니까?
재귀는 함수가... 자신을 호출하여 문제를 해결하는 것입니다! 네, 맞습니다. 그것은 마치 끝까지 도달할 때까지 매번 조금씩 더 짧게 반복해서 말하는 이야기처럼 작동합니다. 하지만 제대로 작동하려면 두 가지 황금률
을 충족해야 합니다.- 종료 조건: 함수가 멈춰야 하는 지점입니다. 그렇지 않으면 영원한 루프에 머물게 됩니다(우리는 그것을 원하지 않습니다, 그렇죠?).
- 자체 호출: 함수가 자신을 호출하여 종료 조건에 도달할 때까지 점점 더 깊어지는 것입니다.
이제 실제로 어떻게 작동하는지 살펴보겠습니다!
어떻게 작동하나요?
더 잘 설명하자면 팩토리얼의 전형적인 예보다 더 좋은 것은 없습니다! (5!)를 계산하고 싶다고 상상해 보세요("5개의 계승" 읽기). 어떻게 작동하나요?
5! = 5*4*3*2*1!
그러나 재귀를 사용하면 다음과 같이 생각할 수 있습니다.
5! = 5 * 4!
그리고 순서대로 4!는 (4 * 3!)이고, 기본 사례인 (1!)에 도달할 때까지 계속됩니다(종료 조건).
실제 예: 계승
코드로 들어가 보겠습니다. 코드가 바로 개념이 구현되는 곳이기 때문입니다! 재귀를 사용한 유명한 계승 계산은 다음과 같습니다.
def fatorial(numero): if numero == 0 or numero == 1: return 1 # caso base else: return numero * fatorial(numero - 1)
설명:
- 여기서 기본 사례는 숫자가 0 또는 1이고 함수가 단순히 1을 반환하는 경우입니다.
- 숫자가 1보다 큰 경우 숫자 - 1로 함수가 호출되어 기본 사례까지 값을 누적합니다.
복잡성
- 시간: (O(n)) — n개의 재귀 호출이 있기 때문입니다.
- Space: (O(n)) — 실행 스택 깊이는 n입니다.
실제 예: 피보나치
또 다른 널리 사용되는 예는 피보나치 수열입니다. 그녀는 이렇습니다:
f(0) = 0, f(1) = 1, f(n) = f(n - 1) f(n - 2)
코드를 알아보겠습니다!
def seq_fib(n): if n == 0: return 0 if n == 1: return 1 if n > 1: return seq_fib(n - 1) + seq_fib(n - 2)
피보나치 복잡도:
- 시간: (O(2^n)) — 지수! ⚠️
- Space: (O(n)) — 재귀 호출을 위한 스택 사용량.
이것이 큰 값의 경우 순수 재귀를 사용한 피보나치 계산이 다소 번거로울 수 있는 이유입니다. 하지만 학습 목적으로는 훌륭한 예입니다!
마지막으로
재귀는 프로그래밍의 핵심 개념이며 처음에는 약간 겁이 나더라도 연습하면 훨씬 쉬워집니다. 이러한 팩토리얼 및 피보나치 예제는 시작에 불과합니다!
연습하고 싶다면 여기 Colab에서 확인하고 복사해 보세요!
위 내용은 Python의 재귀 이해: 그렇다면 직면하시겠습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Tensorflow 또는 Pytorch로 딥 러닝을 수행하는 방법은 무엇입니까?
