函数式编程(javascirpt)
2010-09-14 13:44:24 来源:WEB开发网第一个函数用来计算从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);//调用通用的抽象接口
}
Tags:函数 编程 javascirpt
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接