在程序世界中,有一种非常特殊的情况:一个模块在自身代码中设定要调用自身,这就导致模块执行时会不断重复调用自身的现象,成为递归。下面就来了解一下。
一、复习函数的嵌套
- 函数的嵌套定义
函数的嵌套定义就是在函数内部再定义其他的函数。示例:
function outFun(){
function inFun(x,y){
alert(x+y);
}
inFun(1,5);
}
outFun();
函数的嵌套定义,会使程序的可读性降低。
- 函数的嵌套调用
在JavaScript中,允许在一个函数的函数体中对另一个函数进行调用。示例:
function a(){
alert(“我爱JavaScript");
}
function b(){
a();
}
b();
嵌套调用已经成为编程的基本形式。
二、初识递归函数
下面,来看一个特例:在一个函数的函数体中对函数自己进行调用。
- 示例1:循环实现计算5!的值。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<script type="text/javascript">
var s=1;
for(var i=1;i<=5;i++){
s*=i;
}
document.write(s);
</script>
</body>
</html>
- 示例2:函数实现计算5!的值。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<script type="text/javascript">
function fn(n){
var s=1;
for(var i=1;i<=n;i++){
s*=i;
}
return s;
}
document.