我正在通過在線麻省理工學院講授經典6.001課程的方式:計算機程序的結構和解釋。空間與時間的方案代碼分析
我想了解分析內存使用情況與執行時間方面的代碼複雜性。在前幾個講座中,他們提出了Fibonacci系列方案的解決方案。
他們在視頻中呈現的解決方案具有在x(線性遞歸性能)方面具有增長的特性,這在Fibonacci系列中存在很大問題。當你試圖找到一個更大的斐波那契數時,遞歸所需的空間變得很大。
他們建議試圖找到一種方法來獲得線性迭代性能,其中所需的內存空間在整個計算過程中保持不變並且不依賴於x。
我的解決方案如下。我的具體問題是,在內存使用情況和執行時間方面,我的Scheme代碼的性能分析如何?
(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))