2016-01-09 44 views
0

我學習了underscorejs _.memoize方法,我想知道他的適用場景。 頭暈!頭暈!不瞭解API在說什麼。_.memoize適用的場景是什麼?

var fibonacci = _.memoize(function(n) { 
    return n < 2 ? n: fibonacci(n - 1) + fibonacci(n - 2); 
}); 

回答

1

Memoization創建記住它的結果,使其不必再計算它們的功能。

例如,計算斐波納契時(5):

  • 斐波納契(5)=斐波納契(4)+斐波納契(3)
  • 斐波納契(4)=斐波納契(3)+斐波納契(2 )

等等。你可以看到fibonacci(3)被使用了兩次,但每次都會有相同的結果,所以不需要計算兩次。相反,記憶斐波納契函數只是第一次計算它,並存儲結果;每當斐波那契(3)被使用後,它立即返回存儲的結果。請參閱What is memoization good for and is it really all that helpful?

相關問題