파이썬 재귀

재귀 란 무엇입니까?

재귀는 그 자체의 관점에서 무언가를 정의하는 과정입니다.

물리적 세계의 예는 서로 마주 보는 두 개의 평행 거울을 배치하는 것입니다. 그 사이의 모든 객체는 재귀 적으로 반영됩니다.

파이썬 재귀 함수

파이썬에서는 함수가 다른 함수를 호출 할 수 있다는 것을 알고 있습니다. 함수 자체를 호출하는 것도 가능합니다. 이러한 유형의 구조는 재귀 함수로 불린다.

다음 이미지는recurse라는 재귀 함수의 작업을 보여줍니다.

Python 재귀적 기능
재귀적 기능에 Python

의 예는 다음과 같은 재귀적인 기능을 찾기 위해 요인의 정수입니다.

숫자의 계승은 1 에서 그 숫자까지의 모든 정수의 곱입니다. 예를 들어,6 의 계승(6 으로 표시!)는 1*2*3*4*5*6 = 720.

의 예는 재귀적 기능

def factorial(x): """This is a recursive function to find the factorial of an integer""" if x == 1: return 1 else: return (x * factorial(x-1))num = 3print("The factorial of", num, "is", factorial(num))

출력

The factorial of 3 is 6

위의 예에서factorial()은 재귀적으로 기능은 자체를 호출.

때 우리는 이 함수를 호출에 긍정적인 정수,그것은 것을 재귀적으로 호출에 의해 자체 수를 줄이는.

각 함수는 하나와 같을 때까지 그 아래의 숫자의 계승에 숫자를 곱합니다. 이 재귀 호출은 다음 단계에서 설명될 수 있다.

factorial(3) # 1st call with 33 * factorial(2) # 2nd call with 23 * 2 * factorial(1) # 3rd call with 13 * 2 * 1 # return from 3rd call as number=13 * 2 # return from 2nd call6 # return from 1st call

살펴보십시오 이미지를 보여주는 단계별 프로세스의 무슨 일인:

요인에 의해 재귀적 방법
작업의 재귀적 요인 함수

우리의 끝나 재귀가 감소한 1. 이를 기본 조건이라고합니다.

모든 재귀 함수는 재귀를 중지하거나 함수가 무한히 호출되는 기본 조건을 가져야합니다.

파이썬 인터프리터는 무한 재귀를 피하기 위해 재귀의 깊이를 제한하여 스택 오버 플로우를 초래합니다.기본적으로 재귀의 최대 깊이는 1000 입니다. 한도를 넘으면RecursionError가 발생합니다. 그러한 조건 중 하나를 살펴 보겠습니다.

def recursor(): recursor()recursor()

출력

Traceback (most recent call last): File "<string>", line 3, in <module> File "<string>", line 2, in a File "<string>", line 2, in a File "<string>", line 2, in a RecursionError: maximum recursion depth exceeded

의 이점 재귀

  1. 재귀적 기능 코드를 깨끗이 보이고 우아한입니다.
  2. 복잡한 작업은 재귀를 사용하여 더 간단한 하위 문제로 나눌 수 있습니다.
  3. 시퀀스 생성은 일부 중첩 반복을 사용하는 것보다 재귀가 더 쉽습니다.

재귀의 단점

  1. 때때로 재귀의 논리는 따라하기 어렵습니다.
  2. 재귀 호출은 많은 메모리와 시간을 차지하므로 비용이 많이 듭니다(비효율적입니다).
  3. 재귀 함수는 디버깅하기가 어렵습니다.

Related Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다