国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

javascript 用記憶函數快速計算遞歸函數

2024-05-06 14:11:03
字體:
來源:轉載
供稿:網友
如果有一個 fibonacci 數列要計算:
代碼如下:
var fibonacci = function (n) {
return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2);
};

恐怕數字一大瀏覽器就會崩掉了,因為運算過程中函數會有大量重復的計算。但 JavaScript 強大的數組和函數閉包可以輕松實現對已計算的結果記憶。運算速度會有指數級的提高。

小而強大的記憶函數:
代碼如下:
var memoizer = function (memo, fundamental) {
var shell = function (n) {
var result = memo[n];
if (typeof result !== 'number') {
result = fundamental(shell, n);
memo[n] = result;
}
return result;
};
return shell;
};

第一個參數為初始記憶數列,第二個參數為基礎函數。用起來就更簡單啦:
代碼如下:
var fibonacci = memoizer([0, 1], function (shell, n) {
return shell(n - 1) + shell(n - 2);
});

類似的,如果要算 factorial 數列:
代碼如下:
var factorial = memoizer([1, 1], function (shell, n) {
return n * shell(n - 1);
});
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 鄱阳县| 青浦区| 金昌市| 慈溪市| 玛纳斯县| 厦门市| 沐川县| 通辽市| 精河县| 黑山县| 德兴市| 共和县| 辽宁省| 伊宁县| 六枝特区| 盐边县| 梅州市| 凤台县| 东乡族自治县| 陆丰市| 海城市| 安仁县| 昭苏县| 铁力市| 武定县| 河曲县| 增城市| 定日县| 平谷区| 呼伦贝尔市| 岗巴县| 潮州市| 安福县| 漳州市| 崇仁县| 泸定县| 广河县| 大丰市| 获嘉县| 永昌县| 海口市|