递归函数
注意:
①一个函数在他的函数体内调用他自身称为递归调用,执行递归函数将反复调用其自身,每执行一次进入新的一层。
②为防止递归函数无休止的进行,必须在函数内有终止条件。
③对于一个函数只要知道他的递归定义式和边界条件,就可以编递归函数
例子1:阶乘
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
</body>
<script>
function fn(n){
if(n == 1){
return 1
}else{
return n * fn(n-1)
}
}
var a = fn(5)
console.log(a)
</script>
</html>
例子二:
斐波那契数列
1,1,2,3,5,8,13,21,34,55.....
计算方法:n = fn(n-1) + fn(n-2)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
</body>
<script>
function fn(n){
if(n == 1 || n == 2){
return 1;
}else{
return fn(n-1) + fn(n-2)
}
}
var a = fn(10)
console.log(a)
</script>
</html>
一句话总结递归:自我调用且有完成状态!!!