[最近在优化某些代码时,我们最终执行了我认为是备忘录的“类型”,但是我不确定是否应该这样称呼它。下面的伪代码不是actual算法(因为我们在应用程序中不需要析因,并且发布所说的代码是有罪的),但它足以解释我的问题。这是原始的:
def factorial (n):
if n == 1 return 1
return n * factorial (n-1)
足够简单,但是我们添加了固定点,因此对于大数可以避免进行大量计算,例如:
def factorial (n):
if n == 1 return 1
if n == 10 return 3628800
if n == 20 return 2432902008176640000
if n == 30 return 265252859812191058636308480000000
if n == 40 return 815915283247897734345611269596115894272000000000
# And so on.
return n * factorial (n-1)
,这当然意味着12!
被计算为12 * 11 * 3628800
,而不是效率较低的12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1
。
但是我想知道我们是否[调用此备忘录,因为它似乎被定义为remembering过去的计算结果并使用它们。这更多是关于硬编码计算(不记得)和使用该信息。
这个过程是否有合适的名称,或者我们可以声称记忆不仅可以追溯到运行时完成的计算,还可以追溯到编译时完成的计算,甚至还可以追溯到我开始编写该计算之前的头脑中的计算。代码?