Python에서 고차 함수를 사용하여 가지치기 함수를 구현하는 방법

小云云
풀어 주다: 2018-03-29 14:30:27
원래의
2086명이 탐색했습니다.

이 글은 가지치기 기능을 구현하기 위한 Python의 고차 함수 사용에 대한 관련 정보를 주로 소개합니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.

사례:

때로는 타이밍 통계, 로깅, 작업 결과 캐싱 등과 같은 특정 기능을 여러 기능에 추가하고 싶을 때가 있습니다.

요구 사항:

각 기능에 필요하지 않음 완전히 동일한 코드 추가

해결 방법?抽 동일한 코드를 탐색하여 데코레이터로 정의합니다. 아래에서 위로 계단은 총 10개이며 한 번에 1~3단계만 이동할 수 있으며 돌아갈 수 없는 경로는 몇 개입니까?问题 问题

:

1~3걸음을 걸을 때마다 나머지는 7~9걸음을 찾아야 합니다. 9단계 to go 2걸음을 밟으면 뒤에서 8걸음으로 갈 길을 찾아야 하고, 3걸음을 걸으면 다음 7걸음의 3가지 길을 찾아야 한다. 이런 식으로 구현하면 재귀는 같다. 각 재귀는 하위 노드 함수를 생성합니다

위의 두 가지 문제를 재귀를 통해 해결하면 문제가 발생하게 되며, 이를 C++ 언어에서는 호출합니다. 가지치기 함수


#!/usr/bin/python3
def jian_zhi(func):
  # 中间字典,判断已经是否求解过
  median = {}
  def wrap(*args):
    # 假如不在中间字典中,说明没有求解过,添加到字典中去,在的话,直接返回
    if args not in median:
      median[args] = func(*args)
    return median[args]
  return wrap
@jian_zhi
def fibonacci(n):
  if n <= 1:
    return 1
  return fibonacci(n-1) + fibonacci(n-2)
@jian_zhi
def climb(n, steps):
  count = 0
  # 当最后台阶为0的时候,说明最后只是走了一次
  if n == 0:
    count = 1
  # 当最后台阶不为0的时候,说明还需要走至少一次
  elif n > 0:
    # 对三种情况进行分别处理momo
    for step in steps:
      count += climb(n-step, steps)
       
  # 返回每次递归的计数
  return count
 
if __name__ == &#39;__main__&#39;:
  print(climb(10, (1, 2, 3)))
  print(fibonacci(20))
로그인 후 복사

라고 불리는 가지치기 함수는 단지 각 재귀마다 함수의 고유성을 보장하고 중간 사전을 사용하여 실행된 함수와 매개변수를 저장하며 매개변수를 판단하여 반복되는 함수 호출을 제거합니다.


위 내용은 Python에서 고차 함수를 사용하여 가지치기 함수를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿