//C語言實現斐波那契函數 #include <stdio.h> #include <stdlib.h> //使用數組作一個簡單的「記憶體」,避免重複計算, //但會使得空間佔用擴大到n*sizeof(n) int memoize(int n,int chache[]){ if(n<=0) return 0; if(n==1) return 1; if(chache[n]==0){ chache[n]=memoize(n-1,chache)+memoize(n-2,chache); } return chache[n]; } //求取第n個斐波那契數值 int fib(int n){ if(n<=0) return 0; if(n==1) return 1; int *cache = (int*)calloc(n+1,sizeof(int)); cache[0]=0; cache[1]=1; int sum = memoize(n,cache); free(cache); return sum; } //測試 int main(int argc, char const *argv[]) { int N; printf("請輸入一個數字:"); scanf("%d",&N); printf("第%d個斐波那契數值爲 %d\n",N,fib(N)); }
2.JavaScript實現 斐波那契函數數組
//js實現斐波那契函數 //求取第n個斐波那契數值 var fib = function(N) { var cache = [0,1]; cache.length = N+1; if(N<=1) return cache[N]; //使用數組作一個簡單的「記憶體」,避免重複計算, //但會使得空間佔用擴大到n var memoize = function(n){ if (cache[n] != null) { return cache[n]; } cache[n] = memoize(n-1) + memoize(n-2); return memoize(n); } return memoize(N); }; //測試 console.log(fib(8));