귀속 창고 넘침 해결

1166 단어
귀속 호출 창고의 넘침을 해결하는 방법은 꼬리 귀속 최적화를 통해 꼬리 귀속은 함수가 돌아올 때 자신을 호출하고return 문장은 표현식을 포함할 수 없다는 것을 말한다.이렇게 하면 컴파일러나 해석기는 꼬리 귀속을 최적화시켜 귀속 자체가 몇 번을 호출해도 하나의 창고 프레임만 차지하고 창고가 넘치는 상황이 발생하지 않도록 할 수 있다.사실상 꼬리 귀속과 순환의 효과는 같기 때문에 순환을 특수한 꼬리 귀속 함수로 간주해도 된다.
def fact(n):
    return fact_iter(n, 1)

def fact_iter(num, product):
    if num == 1:
        return product
    return fact_iter(num - 1, num * product)

이를 통해 알 수 있듯이 return fact_iter(num - 1, num * product) 귀속 함수 자체만 되돌아오고 num - 1num * product 함수 호출 전에 계산되며 함수 호출에 영향을 주지 않는다.
주: 대부분의 프로그래밍 언어는 꼬리 귀속을 최적화하지 않았고Python 해석기도 최적화하지 않았기 때문에 위fact(n) 함수를 꼬리 귀속 방식으로 바꾸어도 창고가 넘칠 수 있습니다.
다음으로 전송:https://www.cnblogs.com/zxj9487/p/9955084.html

좋은 웹페이지 즐겨찾기