>  기사  >  백엔드 개발  >  Python 재귀 함수의 정의 및 사용에 대한 분석 예

Python 재귀 함수의 정의 및 사용에 대한 분석 예

黄舟
黄舟원래의
2017-06-04 10:12:411662검색

이 글은 주로 Python재귀함수의 정의와 사용법을 소개하고, 원리와 구현기법, 관련 Python 재귀함수를 구체적인 예시Notes 형태로 분석해 도움이 필요한 친구들이 참고할 수 있습니다

The 이 기사의 예 Python 재귀 함수의 정의와 사용법을 알아보세요. 참고할 수 있도록 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

재귀 함수

함수 내에서 다른 함수를 호출할 수 있습니다. 함수가 내부적으로 자신을 호출하면 재귀적입니다.

예를 들어, 팩트(n) 함수로 표현되는 계승 n! = 1 * 2 * 3 * ... * n을 계산해 보면

fact(n) = 1입니다. * 2 * 3 * ... * (n-1) * n = (n-1)! * n = 사실(n-1) * n

그래서 사실(n)은 n * 사실로 표현될 수 있습니다. (n -1), n=1에만 특별한 처리가 필요합니다.
그래서 재귀적으로 작성된 Fact(n)은 다음과 같습니다.

def fact(n):
if n==1:
  return 1
return n * fact(n - 1)

위는 재귀 함수입니다. 시도해 볼 수 있습니다:

>>> fact(1)
1
>>> fact(5)
120
>>> fact(100)
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000L

fact(5)를 계산하면 함수 정의에 따라 다음과 같이 계산 과정을 볼 수 있습니다.

===> fact(5)
===> 5 * fact(4)
===> 5 * (4 * fact(3))
===> 5 * (4 * (3 * fact(2)))
===> 5 * (4 * (3 * (2 * fact(1))))
===> 5 * (4 * (3 * (2 * 1)))
===> 5 * (4 * (3 * 2))
===> 5 * (4 * 6)
===> 5 * 24
===> 120

재귀 함수의 장점은 정의가 간단하고 논리가 명확하다는 것입니다. 이론적으로 모든 재귀 함수는 loop로 작성할 수 있지만 루프의 논리는 재귀만큼 명확하지 않습니다.

재귀 함수를 사용할 때 스택 오버플로를 방지하도록 주의하세요. 컴퓨터에서 함수 호출은 스택의 데이터 구조를 통해 구현됩니다. 함수 호출이 입력될 때마다 스택 프레임 계층이 스택에 추가됩니다. 스택 크기는 무한하지 않기 때문에 재귀 호출이 너무 많으면 스택 오버플로가 발생합니다. Fact(10000)를 계산해 볼 수 있습니다.

아아아아

위 내용은 Python 재귀 함수의 정의 및 사용에 대한 분석 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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