我通过麻省理工学院为古典6.001课程举办的网上讲座而工作: 计算机方案的结构和解释。
我试图从记忆使用到执行时间的角度了解分析代码的复杂性。 在前几场讲座中,他们提出了菲博克斯系列计划中的解决办法。
它们在录像中展示的解决办法是,具有X(Linear Recursion)记忆空间增长的特点,这给《菲克斯系列》带来了一个大问题。 当你试图找到更多的菲博克斯时,重新入侵所需的空间变得巨大。
他们建议设法取得线性循环性能,因为在整个计算过程中,所需的记忆空间始终保持不变,而斜线取决于X。
我的解决办法如下。 我的具体问题是,从记忆使用到执行时间来看,下文对我计划守则的绩效分析是什么?
(define (fib x)
(define (fib-helper target total current-index i-2 i-1)
(if (> current-index target)
(if (= target 1)
0
total)
(fib-helper target
(+ i-2 i-1)
(+ current-index 1)
i-1
(+ i-2 i-1))))
(fib-helper x 1 3 0 1))