递归算法在javascript中使用的小技巧 (javascript的对象封装方法介绍)

王朝html/css/js·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

By Ben

比如求 10! 的结果

有两种解法:

法一:

一般的做法:

//===========================

document.writeln("<br/>递归算法一:<br/>");

//===========================

function factorial(x) {

if(x < 2)

return 1;

else

return x * factorial(x - 1);

}

document.writeln("10!=" + factorial(10));

法二:

还可在类的方法中执行递归,但这有点儿冒险。

在JavaScript中调用类的方法名来进行递归,会造成“Object Expected”错误。为避免这个错误,必须用方法的基本函数名或callee参数来执行递归。以清单D为基础,我在myMath类中添加了阶乘方法,如下所示。

document.writeln("<br/>递归算法二:<br/>");

function myMath() {

//=======================================

this.result; //Result of method

this.factorial = myFactorial; //Factorial method

function myFactorial(x) {

if(x < 2)

return 1;

else {

this.result = x * arguments.callee(x - 1);

return this.result;

}

}

//=======================================

}

var math = new myMath(); // Create an instance

document.writeln("10! =" + math.factorial(10));

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航