난 꼬리 - 재귀 및 반복 계산 속도를 memoization 사용하는 pow()
계산하는 알고리즘을 찾고 있어요.꼬리 - 재귀 pow() 알고리즘을 memoization?
성능은 문제가되지 않습니다. 이것은 대부분 지적 훈련입니다. 기차 타기를 할 수있는 모든 구현이 다르기는했지만,이 두 가지 속성을 가진 것이 만족 스러웠습니다.
내 최고의 기회는 다음이었다
def calc_tailrec_mem(base, exp, cache_line={}, acc=1, ctr=0):
if exp == 0:
return 1
elif exp == 1:
return acc * base
elif exp in cache_line:
val = acc * cache_line[exp]
cache_line[exp + ctr] = val
return val
else:
cache_line[ctr] = acc
return calc_tailrec_mem(base, exp-1, cache_line, acc * base, ctr + 1)
그것은 작동하지만, 모든 계산의 결과 memoize하지 않습니다 - 지수 1..exp/2
및 exp
들만을.
암기가 아니라 암기 : http://en.wikipedia.org/wiki/Memoization – hobodave
와우, 그건 파이썬의 기본 주장을 무서워하는 것입니다. 실제로 전역 변수를 에뮬레이트하고 있습니다. – Thomas