斐波那契函数(C语言、JavaScript)

斐波那契函数(C语言、JavaScript)

  1. C语言实现斐波那契函数
//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,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));
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 斐波那契函数(C语言、JavaScript)