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

news/2024/7/10 22:40:08 标签: JavaScript, 算法, .net, Blog, HTML
<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/46860.html" frameborder="0" width="468" scrolling="no" height="60"></iframe>
By Ben

比如求 10! 的结果

有两种解法:
法一:
一般的做法:
//===========================
document.writeln("
递归算法一:
");
//===========================
function factorial(x) {
if(x return 1;
else
return x * factorial(x - 1);
}

document.writeln("10!=" + factorial(10));
法二:
还可在类的方法中执行递归,但这有点儿冒险。
JavaScript中调用类的方法名来进行递归,会造成“Object Expected”错误。为避免这个错误,必须用方法的基本函数名或callee参数来执行递归。以清单D为基础,我在myMath类中添加了阶乘方法,如下所示。
document.writeln("
递归算法二:
");
function myMath() {
//=======================================
this.result; //Result of method

this.factorial = myFactorial; //Factorial method
function myFactorial(x) {
if(x 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));


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=192304



http://www.niftyadmin.cn/n/598944.html

相关文章

利用css里expression来实现界面对象的批量控制

<iframe align"top" marginwidth"0" marginheight"0" src"http://www.zealware.com/46860.html" frameborder"0" width"468" scrolling"no" height"60"></iframe>By Ben利用css里…

早安 2017年!

2016年就那么过去啦&#xff01;2017年我们来啦&#xff01;Hello 2017年&#xff01; 2016年做了很多事情&#xff0c;学了很多东西&#xff0c;自己思考了很多&#xff0c;也成长了很多&#xff01; 就像莎士比亚说的&#xff1a;“一切过往&#xff0c;皆成为序章。” 2016年…

Quartz.net官方开发指南 第七课 : TriggerListeners和JobListeners

监听器是在scheduler事件发生时能够执行动作的对象。可以看出&#xff0c;TriggerListeners接收与triggers相关的事件&#xff0c;而JobListeners则接收与Job相关的事件。Trigger相关的事件包括&#xff1a;trigger触发、trigger未触发&#xff0c;以及trigger完成&#xff08;…

Apache配置——默认虚拟主机

注&#xff1a;apache默认访问第一个虚拟主机。我们配置的www.test.com访问论坛&#xff0c;它的别名www.aaa.com以及ip都可以访问这个论坛&#xff0c;现在就有点疑惑了&#xff0c;test与aaa我们配置了&#xff0c;为什么这个Ip也可以访问这个论坛呢&#xff0c;这呢&#xf…

章节2:SQL之多表连接

Sql的多表连接关系有&#xff1a;内连接、外连接和交叉连接。 先建立两个用于演示的表&#xff1a; TB_Characters&#xff1a; IdCharacter1内向2外向3中性性格TB_Colors&#xff1a; IdColor1绿色2红色4蓝色一、内连接&#xff1a; 内连接&#xff08;JOIN 或 INNER JOIN&am…

价值2万元的阿里云免费套餐最全使用攻略

阿里云免费套餐旨在为更多企业提供享受新科技的普惠机会 包含了30余款产品最长6个月的免费使用资格 阿里云免费套餐怎么获取&#xff0c;怎么开通各试用产品&#xff0c;怎么使用这些产品&#xff0c;我们经验丰富的用户已经进行了汇总分享&#xff0c;你还有什么理由放过这送到…

BootLoader(2440)核心初始化代码

1.gboot.lds OUTPUT_ARCH(arm)ENTRY(_start)SECTIONS { . 0x30008000; //起始地址 . ALIGN(4);//4字节对齐 .text :  //代码段 { start.o (.text)//以.o开始执行 *(.text) } . ALIGN(4); .data : //数据段 { *(.data) } .…

汽车各档爬坡度曲线matlab,汽车课设货车Matlab爬坡度图程序(需改发动机扭矩转速和变速箱传动比)...

汽车课设货车Matlab爬坡度图程序(需改发动机扭矩转速和变速箱传动比) 汽车爬坡度图 clc clear all Ttq[498,580,660,700,690,685,680,680,675,672,665,640,610,600]; io3.62; nt0.9;%机械效率% r0.423; ma7800;%汽车总质量% g9.8; Gma.*g; f0.02; n[1000,1200,1400,1500,1600,1…