이 글은 가지치기 기능을 구현하기 위한 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__ == '__main__': print(climb(10, (1, 2, 3))) print(fibonacci(20))
위 내용은 Python에서 고차 함수를 사용하여 가지치기 함수를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!