递归 recursive
2024-10-18 03:59:57
递归函数是在一个函数通过名字调用自身的情况下构成的。
function factorail(num)
{
if(num <= 1)
{
return 1;
}
else{
return num * factorail(num-1);
}
}
上面的代码虽然经典,在全局函数变量作为其引用的情况下,很容易出错。
var anotherFactorial = factorail;
factorial = null;
alert(anotherFactorail(4));
上面问题可以通过 arguments.callee 来解决。
因此最开始的递归函数可以改写成,
function factorail(num)
{
if(num <= 1)
{
return 1;
}
else{
return num * arguments.callee(num-1);
}
}
其中,arguments.callee 是一个指向正在执行的函数的指针。
然而在严格模式下,上述代码仍然会导致错误,此时的解决方案是,通过函数表达式来达到相同的结果。
var factorial = (function f(num)
{
if(num <= 1)
{
return 1;
}
else
{
return num * f(num -1);
}
})
上面创建的是一个名为f() 的命名函数表达式
最新文章
- win32记事本程序(一)
- zabbix3.0安装【server】
- 《深入理解Bootstrap》勘误
- ASP.NET Web API 数据验证
- solr与.net系列课程(三)solr连接数据库
- C++中的static关键字(转)
- C#对HTML转译需要注意的问题
- (转)软件版本中的Alpha,Beta,RC,Trial是什么意思?
- ☀【单位】REM
- 一些不太常用的Linux命令
- 在Fragment中实现百度地图,定位到当前位置(基于SDKv2.1.0)
- two sets of Qt binaries into the same process的解决办法
- 自定义控件之--组合控件(titlebar)
- 201521123059 《Java程序设计》第十一周学习总结
- highcharts框架使用总结
- 如何在命令行中让python2和python3同存
- iframe父页面和子页面获取元素和js变量
- Django之富文本编辑器
- lr中错误解决方法19种
- 查询MYSQl数据表中的最后一条记录
热门文章
- CodeFirst模式开发涉及到mysql简单使用
- UVA 11624 Fire!【两点BFS】
- 洛谷——P1327 数列排序
- Codeforces 361D Levko and Array(二分)(DP)
- 水流(water)(BFS)(DFS)
- ASP.NET Core 2.2 基础知识(七) 选项模式
- 8.6(java学习笔记)类加载过程及类加载器
- Matlab与C++混合编程 编写独立外部应用程序时出现“无法定位序数3906于动态链接库LIBEAY32.dll上”错误
- iOS :学习新技术途径和sizeClasses屏幕适配
- PHP文件包含漏洞总结