我們知道斐波那契數列(也稱作兔子數列) 1,1,2,3,5,8,13,21,34。。。。。
前兩位數固定是1,之後每一位數都是前兩位數的之和,這樣的數列就是斐波那契數列
那麼我們要求這樣的數列,就必須要求n-1和n-2位數
function getfb(n)求斐波那契數列的第十位 在控制台中列印出來的是 55else
}console.log(getfb(
10));
那麼 第五十位呢?。。。。。。。。。
很好,我的瀏覽器卡死崩潰了
由此我們可知,這樣求斐波那契數列實在是太浪費效能了
既然有問題我們就來解決它
那麼 求斐波那契數列的時候是為什麼會浪費效能呢?
原因就是瀏覽器求了太多重複項
var i = 0; //宣告乙個變數,用來記錄呼叫getfb()方法的次數
function
getfb(n)
else
}console.log(getfb(20));// 我的瀏覽器求不出來這麼多項 所以換了小一點的數字
console.log(i);求斐波那契數列的第20位會呼叫13529次函式
那麼求第30位呢?
多達16萬次
第40位呢?第50 位呢?。。。。。。。
所以這個樣子實在是太浪費效能了
解決問題的思路:我們把已經求過的項用乙個變數儲存起來,如果下次還需要用到這個項就直接取出來用,而不是再去呼叫函式
var i = 0;//那麼我們就來看看結果吧宣告乙個變數i,記錄呼叫getfb這個函式的次數.
//宣告乙個物件obj,用來儲存已經求過的項.
var obj ={};
function
getfb(n)
else
else}}
console.log(getfb(60));
console.log(i);
斐波那契數列的第60位大的嚇人,但是我們卻也只呼叫了117次函式,極大的提高了效能
使用遞迴解決斐波那契數列的效能問題
原文 使用遞迴解決斐波那契數列的效能問題 我們知道斐波那契數列 也稱作兔子數列 1,1,2,3,5,8,13,21,34。前兩位數固定是1,之後每一位數都是前兩位數的之和,這樣的數列就是斐波那契數列 那麼我們要求這樣的數列,就必須要求n 1和n 2位數 function getfb n else c...
使用遞迴解決斐波那契數列的效能問題
原文 使用遞迴解決斐波那契數列的效能問題 我們知道斐波那契數列 也稱作兔子數列 1,1,2,3,5,8,13,21,34。前兩位數固定是1,之後每一位數都是前兩位數的之和,這樣的數列就是斐波那契數列 那麼我們要求這樣的數列,就必須要求n 1和n 2位數 function getfb n else c...
遞迴與斐波那契數列
迭代實現 def fab n a1 1 a2 1 a3 1if n 1 print 輸入有誤 return 1 while n 2 0 a3 a1 a2 a1 a2 a2 a3 a 1return a3 result fab 20 if result 1 print 總共有 d對小兔子誕生 resu...