귀속

4061 단어

귀속

  • 만약에 한 함수가 내부에서 자신을 호출한다면 이 함수를 귀속함수
  • 라고 부른다
  • 귀속 조건:
  • 1. 서브문제는 원시문제와 같은 일이며 더욱 간단하다.무제한 호출 자체는 안 되고, 수출이 있어야 하며, 비귀속 상황으로 간소화해야 한다.
  • 고스 구와 문제:
  •     def sum_number(n):
            total = 0
            for i in range(0,n+1):
                total += i
        sum_number(100)
    

    반복적으로 쓰는 경우:
        def sum_number(n):
            if n<=0:
                return 0
            return n+sum_number(n-1)
        sum_number(100)
    
  • 귀환 핵심: 매번 귀환할 때마다 전체적인 문제는 원래보다 줄이고 일정한 차원으로 귀환할 때 직접 결과를 제시해야 한다.
  • 기본 단계:
  • 1. 알고리즘을 초기화한다.귀속 프로그램은 보통 시작할 때 사용하는 피드 값을 필요로 한다. 함수에 파라미터를 전달하거나 입구 함수를 제공할 수 있다. 이 함수는 비귀속이지만, 귀속 계산을 위해 피드 값을 설정할 수 있다.2. 처리할 현재 값이 베이스라인 조건과 일치하는지 확인합니다.일치하면 처리하고 값을 되돌려줍니다.더 작거나 더 간단한 하위 문제를 사용하여 답을 재정의하다.4. 하위 문제에 대해 알고리즘을 진행한다.결과를 답안에 합친 표현식 6.결과 반환
  • 주의: 귀속 함수를 사용하여 귀속 깊이 넘침을 배치해야 한다. 파이톤에서 통상적으로 이 깊이는 1000층으로 이상을 던질 것이다.컴퓨터에서 함수 컴포지팅 호출은 창고(stack)라는 데이터 구조를 통해 이루어진 것으로 컴포지팅에 들어갈 때마다 창고는 한 층을 더하고 함수가 한 번 되돌아올 때마다 창고는 한 층을 줄인다.창고의 크기가 무선이 아니기 때문에, 귀속 호출 횟수가 너무 많으면 창고가 넘칠 수 있습니다.

  • 귀속

  • 소개:
  • 1. 귀속 호출이 전체 함수체가 마지막으로 실행하는 문장이고 귀속 값이 표현식의 일부분에 속하지 않을 때 꼬리 귀속이다.특징: 회귀 과정에서 어떠한 조작도 하지 않는다.3. 원리: 컴파일러가 함수 호출이 끝귀속이라는 것을 알았을 때 현재 활동 기록을 덮어쓰는 것이지 창고에서 새로운 것을 만드는 것이 아니다.운영 효율성 향상
  • 꼬리귀속 방식으로 곱셈 함수 실현:
  •     def facttail(n,res):
            if n < 0:
                return 0
            elif n == 0:
                return 1
            elif n == 1:
                return res
            else:
                return facttail(n-1,n*res)
    

    귀속보다 매개 변수res가 더 많을 뿐입니다.res (초기화 1) 유지보수 귀속 차원의 깊이입니다.

    익명 함수


    Python은 lambda 키워드를 사용하여 익명 함수를 만듭니다.익명이란 def 문장으로 표준 함수를 정의하지 않는 것이다.lambda는 하나의 표현식일 뿐 코드 블록이 아니다. 함수체는 def보다 간단하다.lambda 표현식에서만 유한한 논리를 봉인할 수 있다.lambda 함수는 자신의 명명 공간을 가지고 있습니다 4.형식: lambda 매개 변수: 표현식 5.익명 함수는 변수에 값을 부여할 수 있으며, 변수를 이용하여 이 함수를 호출할 수 있다
        >>>f = lambda x:x*x
        >>>f(6)
        36
    

    6. 익명 함수를 다른 함수로 되돌려줄 수 있다

    유도식


    1. 목록 유도식
  • 빠른 생성 목록:
  •     lis = [x*x for x in range(1,11)]
    

    다음과 같습니다.
        lis = []
        for x in range(1,11):
            lis.append(x*x)
    
  • 조건문 증가
  •     >>>[x*x for x in range(1,11) if x%2 == 0]
        [4,16,36,64,100]
    
  • 다중 순환
  •     >>>[a+b for a in '123' for b in 'abc']
        ['1a','1b','1c','2a','2b','2c','3a','3b','3c']
    

    2. 사전 유도식
        >>> dic = {x:x**2 for x in (2,4,6)}
        {2:4,4:16,6:36}
        >>> type(dic)
        
    

    중간은 왼쪽이 키이고 오른쪽이value임을 나타낸다.집합 유도식 대괄호는 사전 유도식 외에 집합 유도식으로도 쓸 수 있다.미세한 차이
        >>> a = {x for x in 'abcrabiaac' if x not in 'abc'}
        >>> a
        {'r','i'}
        >>> type(a)
        
    

    4. 원조 유도식이 없고 원조 유도식이 없고 원조 유도식이 없다
    면접문제: 다음 코드 출력 결과가 무엇인지 보시겠어요?왜?
        result = [lambda x:x+i for i in range(10)]
        print(result[0](10))
    

    결과:result0~9의 결과는 모두 19 함수가 호출될 때만 변수를 찾는 특성을 가지고 있다.그것을 호출하기 전에 내부 변수의 구체적인 값을 저장하지도 않고 관심도 없습니다.네가 그것을 호출할 때만 돌아가서 변수의 구체적인 값을 하나하나 찾아라.result[0]가 호출되었을 때 변수 i는 이미 순환이 끝났고 9가 되었다.
  • i 순환의 값을 원하면 어떻게 합니까?상부 변수를 인용하지 말고 i를 직접 전달
  •     result = [lambda x,i=i:x+i for i in range(10)]
    

    교체기


    교체기는 범람할 수 있는 대상이며,next () 함수와 작용할 수 있다.교체기 대상은 집합의 첫 번째 요소부터 모든 요소가 다 접근될 때까지 접근합니다.교체기는 뒤로 옮길 수 있을 뿐 거슬러 올라갈 수 없다.두 가지 방법: iter()next()
  • 생성
  •     lis = [1,2,3]
        it = iter(lis) // 
        next(it)       // 
    
  • 교체기(Iterator)와 교체가능(Iterable)의 차이
  • 1. for 순환으로 사용할 수 있는 대상은 모두 교체 가능한 유형이다.next () 함수에 작용하는 대상은 모두 교체기 형식이다.list, dict,str 등은 교체할 수 있지만 교체기가 아닙니다.next () 함수를 호출할 수 없기 때문에iter () 함수를 통해 교체기로 변환할 수 있습니다.for 순환의 본질은next () 함수를 끊임없이 호출하여 실현하는 것이다.

    좋은 웹페이지 즐겨찾기