//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));