案例:求斐波那契數列第n位是多少封裝函式
阿新 • • 發佈:2018-12-17
//斐波那契數列:1,1,2,3,5,8,13,21,34,55…
//我們寫一個函式getFB()就是用來求斐波那契數列第n位的數是多少.
//把已經求過的項用物件儲存起來,以後如果還要求這個項就直接取出來用,這樣就解決了效能低下的問題.
function createFB(){
var obj = {};//宣告一個物件,用來儲存已經求過的項..
function getFB(n){
//先判斷以下,這個n位已經求過沒有,如果求過,就直接取出來,如果沒有求過,再求不遲
if(obj[n] != undefined){
//說明之前這個n求過.
return obj[n];
}else {
//說明之前沒有求過.
if(n == 1 || n == 2){
obj[n] = 1;
return 1;
}else {
obj[n] = getFB(n-1) + getFB(n-2);
return obj[n];
}
}
}
return getFB;//返回getFB這個函式
}
//測試:
console.log(createFB()(50));//呼叫getFB函式,同時傳參