>  기사  >  백엔드 개발  >  Python의 재귀 이해: 그렇다면 직면하시겠습니까?

Python의 재귀 이해: 그렇다면 직면하시겠습니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-31 18:10:14421검색

Entendendo Recursão em Python: E aí, vai encarar?

재귀는 프로그래밍의 기본 개념이지만 때로는 다소 신비스러워 보일 수 있습니다. 이제 이것을 단순화하여 보기보다 쉽다는 것을 확인해 봅시다!

재귀란 무엇입니까?

재귀는 함수가... 자신을 호출하여 문제를 해결하는 것입니다! 네, 맞습니다. 그것은 마치 끝까지 도달할 때까지 매번 조금씩 더 짧게 반복해서 말하는 이야기처럼 작동합니다. 하지만 제대로 작동하려면 두 가지 황금률

을 충족해야 합니다.
  1. 종료 조건: 함수가 멈춰야 하는 지점입니다. 그렇지 않으면 영원한 루프에 머물게 됩니다(우리는 그것을 원하지 않습니다, 그렇죠?).
  2. 자체 호출: 함수가 자신을 호출하여 종료 조건에 도달할 때까지 점점 더 깊어지는 것입니다.

이제 실제로 어떻게 작동하는지 살펴보겠습니다!

어떻게 작동하나요?

더 잘 설명하자면 팩토리얼의 전형적인 예보다 더 좋은 것은 없습니다! (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)

설명:

  1. 여기서 기본 사례는 숫자가 0 또는 1이고 함수가 단순히 1을 반환하는 경우입니다.
  2. 숫자가 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.