中允许函数递归调用。前面定义过的 factorial() 函数也可以用递归方式定义:
function factorial(number) {
if (number == 1) {
return number;
}else {
return number * factorial(number-1);
}
}
print(factorial(5));
当一个函数被递归调用,在递归没有完成时,函数的计算结果暂时被挂起。为了说明这个过程,这里用一列表展示了以 5 作为参数,调用 factorial() 函数时函数的执行过程:
5 * factorial(4)
5 * 4 * factorial(3)
5 * 4 * 3 * factorial(2)
5 * 4 * 3 * 2 * factorial(1)
5 * 4 * 3 * 2 * 1
5 * 4 * 3 * 2
5 * 4 * 6
5 * 24
120
对于大多数情况, 都有能力处理递归层次较深的递归调用(上面的例子递归层次较浅);但是保不齐有的算法需要的递归深度超出了 的处理能力,这时我们就需要寻求该算法的一种迭代式解决方案了。任何可以被递归定义的函数,都可以被改写为迭代式的程序,要将这点牢记于心。
继续阅读与本文标签相同的文章
上一篇 :
精益时代的汽车线边物流规划与发展
下一篇 :
新版Win10 DX12大升级 光追显卡大洗牌
-
搭建自己的技术博客系列(一)使用 hexo 搭建一个精美的静态博客
2026-05-18栏目: 教程
-
搭建自己的技术博客系列(二)把 Hexo 博客部署到 GitHub 上
2026-05-18栏目: 教程
-
CMU 15-721 14-数据库调度 Scheduling
2026-05-18栏目: 教程
-
从校招生到核心架构师,支付宝研究员李俊奎谈如何成为一名优秀的程序员
2026-05-18栏目: 教程
-
【阿里云十年,因为有我而不同】有一种糖叫语法糖【5】IOT三连之设备之扩展操作
2026-05-18栏目: 教程
