Javascript-什么是递归?
2024-08-27 23:54:33
递归?
程序调用自身的编程技巧就称之为递归(recursion),就是再运行的过程中调用自己,本质上就是循环.
构成递归的条件有:
Ⅰ.不能无限制的调用本身,必须有一个出口,化为简单的状况处理(非递归状况).
Ⅱ.子问题和原始问题为同样的事情,且子问题更为简单.
由于递归是函数本身一层层压栈,导致先入栈的不能出栈,空间占满以后就会造成堆栈溢出的现象.
例如斐波那契数列在数学上就被以递归的方法定义:
数列:1,1,2,3,5,8,13,21,34,55,89......
这个数列从第三项开始,每一项都等于前两项之和.
递归的方法定义:F(0)=1,F(1)=1,F(n)=F(n-1)+F(n-2) (n>2, n∈N*)
求斐波那契数!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var n = Number(prompt('请输入所求斐波那契数的某项'))
function feb (n) {
// 第n项应该是n-1项加上n-2项的和
// 递归的出口应该在第一项和第二项值为1
if (n === 1 || n === 2) {
return 1
}
return feb(n-1) + feb(n-2)
}
document.write('斐波那契数的第' + n + '项的值为:' + feb(n))
</script>
</body>
</html>
最新文章
- SQL Server性能计数器收集汇总方案(Reporting Service)
- 怎样获取Windows平台下SQL server性能计数器值
- 运维利器-ClusterShell集群管理操作记录
- python2.x和3.x的区别
- (转载)RTorrent 命令行使用说明
- jquery源码学习之extend
- 萝卜叶万能助手SEO网络营销简介
- EditText小技巧
- 160929、各数据库连接配置与maven依赖安装
- [转]SQL Server建立应用程序安全性和程序角色
- WeChat Official Account Admin Platform Message API Guide
- C++重载解析
- 转: 向tabControl中添加一个Form(C#)
- ubuntu中出现警告:Gtk-WARNING**: 无法在模块路径中找到主题引擎:“pixmap”
- PHP新手之学习类与对象(2)
- Android简单计时器
- KTV项目之3个ListView的跳转和加载歌手图片
- EasyUI Form提交后json数据IE上需要下载(转)
- <;转>;jmeter(七)定时器
- c#简单案例--单位转换器