我正在尝试记忆一个递归函数,用于计算中的项数(对于中的问题14 )。我认为这是由于递归调用调用了函数的非内存版本,这有点违背了目的。在这种情况下,在这里做memoization的正确方法是什么?有没有办法让所有对原始函数的调用都调用记忆版本本身,而不需要特殊的m-collatz-step符号?在编辑之前,我错误地放了:
(defvar c
我编写了这个非常简单的函数来计算Collatz级数收敛到1的步骤,它被称为递归,但是使用了一个全局变量,我想消除它。我相信正确的(?)这样做的方法是使变量成为函数调用的参数;但是,当我这样做时,我得到的值是在所有调用都已解除之后,而不是在最后一个值之后。例如,如果您用steps = 0; collatz(97)调用这个函数,您将得到118返回。:
num = num