网站制作

本类阅读TOP10

·IIS 安装配置全攻略
·用VS.NET打开网上下载的.NET web项目出错的解决办法
·HTML 4.0 语言快速参考
·限制TextArea区的文字输入数量
·如何在网页上实现进度条
·Apache的配置步骤及测试
·谈谈Jesse James Garrett提到的Ajax
·html基础学习笔记(2)
·页面垂直居中的两种方法
·用asp遍历目录下文件的例子

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
递归算法在javascript中使用的小技巧 (javascript的对象封装方法介绍)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

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



相关文章

相关软件