递归
当函数直接或者间接调用自己时,则发生了递归,它有俩个要素:
- 递归边界
- 递归的逻辑 ——递归"公式"
斐波那契数列
我们知道Fibonacci数的递推公式为:F(0)=F(1)=1,F(n)=F(n-1)+F(n-2) n>=2;
明显地给出了递归边界n=0或1的时候F(n)的值,和递归逻辑F(n)=F(n-1)+F(n-2),即递推公式
<script>
var fib = function (n){
if(n==0 || n==1){ //递归的边界
return 1;
}
return fib(n-1) + fib(n-2);
}
for (var n=1;n<10;n++){
console.log( fib(n));
}
</script>
求阶乘
<script>
function jiecheng(n) {
if (n == 0) { 0的阶乘1
return 1;
}
else{
return jiecheng(n-1)*n;
}
}
console.log(jiecheng(5));
</script>
1-100之和
<script>
function f1(x){
if(x<=0)
{
return 1;
}
return x+f1(x-1);
}
console.log(f1(100));
</script>
递归示例:(可以按照以下顺序逐步练习递归)