WEB开发网
开发学院网页设计JavaScript 函数式编程(javascirpt) 阅读

函数式编程(javascirpt)

 2010-09-14 13:44:24 来源:WEB开发网   
核心提示: 第一个函数用来计算从a-b的数的总和,步长为1,函数式编程(javascirpt)(3),第二个函数计算a-b的立方和,步长为1,将上述的两个函数做为参数传入,输出即为运算结果:function sum(term, a, next, b){ if(a > b){ return 0;

第一个函数用来计算从a-b的数的总和,步长为1,第二个函数计算a-b的立方和,步长为1,第三个函数计算a-b的一个方程的和(将a-b中的每一个数带入此方程进行计算),步长为4.

从函数的形式以及函数的作用来看,这三个函数有很大的共性,所以我们考虑是否可以将这些共性抽取出来,将每次计算的步长和方程传入,进行求和计算??答案当然是肯定的,下面我们来抽象:

定义下一个参与计算的数(通过步长函数的定义)

定义求什么的和(函数体的定义)

有了这两个函数,我们就可以计算任意的方程,指定区间的求和操作,将上述的两个函数做为参数传入,输出即为运算结果:

function sum(term, a, next, b){
    if(a > b){
        return 0;
    }else{
        return sum(term, next(a), next, b)+term(a);
    }
}

这个函数需要四个参数,一个是关于计算子的定义term,一个是步长函数next,另外两个即为区间的两个端点a,b,这样我们可以重新定义上述的三个函数如下:

function intSum(a, b){
    function inc(x){return x + 1;}
    function identity(x){return x;}

    return sum(identity, a, inc, b);//调用通用的抽象接口
}

function cubeSum(a, b){
    function inc(x){return x + 1;}
    function cube(x){return x * x * x;}

    return sum(cube, a, inc, b);//调用通用的抽象接口
}

function piSum(a, b){
    function piTerm(x){ return 1/((x+2)*x); }
    function piNext(x){ return x+4; }

    return sum(piTerm, a, piNext, b);//调用通用的抽象接口
}

上一页  1 2 3 4 5  下一页

Tags:函数 编程 javascirpt

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接