Python 재 귀 함수 정의 및 용법 예제
역귀 함수
함수 내부 에서 다른 함 수 를 호출 할 수 있 습 니 다.만약 한 함수 가 내부 에서 자신 자 체 를 호출 한다 면,이 함 수 는 귀속 함수 이다.
예 를 들 어 계단 n 을 계산 합 시다!=1*2*3*...*n,함수 fact(n)로 표시 하면 알 수 있 습 니 다.
fact(n) = n! = 1 * 2 * 3 * ... * (n-1) * n = (n-1)! * n = fact(n-1) * n
따라서 fact(n)는 n*fact(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
재 귀 함수 의 장점 은 정의 가 간단 하고 논리 가 뚜렷 하 다 는 것 이다.이론 적 으로 모든 재 귀 함 수 는 순환 방식 으로 쓸 수 있 지만 순환 의 논 리 는 재 귀 보다 뚜렷 하지 않다.재 귀 함 수 를 사용 하려 면 스 택 이 넘 치지 않도록 주의해 야 합 니 다.컴퓨터 에서 함수 호출 은 스 택(stack)이라는 데이터 구 조 를 통 해 이 루어 집 니 다.한 함수 호출 에 들 어 갈 때마다 스 택 프레임 을 추가 하고 함수 가 돌아 올 때마다 스 택 프레임 을 한 층 줄 입 니 다.스 택 의 크기 가 무한 한 것 이 아니 기 때문에 재 귀적 호출 횟수 가 너무 많 으 면 스 택 이 넘 칠 수 있 습 니 다.fact(10000)를 계산 해 볼 수 있 습 니 다.
def digui(n):
sum = 0
if n<=0:
return 1
else:
return n*digui(n-1)
print(digui(5))
더 많은 파 이 썬 관련 내용 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.