但是一定要注意控制好合适的跳出,不然就会死循环,如图:
所以我们平时一定要注意,递归函数里调用函数本身的时候一定要要合理的控制循环跳出的语句;比如我们来看一题很经典的面试题,请用递归方法算出1-20之间每个数的和
function calc(num){
//这个if是退出递归的条件
if(num===1) { //如果没有这个if条件
return num
}
return num + calc(num-1) //
}
console.log(calc(3)) //这里为了方便我们理解我们可以先用num===3替代进去,具体的方式以及步骤分解可以看图:
如果有大佬有更好的理解方法,可以留言或者私信哦,互相学习,互相进步~~~
<!DOCTYPE >
<html>
<head>
<meta content="" charset="utf-8">
<title>函数的递归调用</title>
</head>
<body>
<script>
//递归的概念:自己调用自己
//注意:使用递归的时候必须有一个结束标志,否则会报内存溢出的错误 Maximum call stack size exceeded
/* 1.案例一:求1,2,3...n 的和 */
function fn(n){
if(n===1){
return 1
}
return n+fn(n-1)
}
//console.log(fn(3))
/* 2.案例二:求1,2,3...到n的阶乘 */
function getFactorial(n){
if(n===1){
return 1
}
return n * getFactorial(n-1)
}
//console.log(getFactorial(3))
/* 案例三:斐波那契数列 *///第n个数等于前两个数的和,除第一个数跟第二个树外:如1,1,2,3,5,8,11,19,30...
function getNFibonacciSequence(n){
if(n===1 || n===2){
return 1
}
return getNFibonacciSequence(n-1)+getNFibonacciSequence(n-2)
}
console.log(getNFibonacciSequence(4))
</script>
</body>
</html>
之前给小伙伴们分享过JS的 setInterval 和 setTimeout 函数,这篇文章要分享给大家的是JS当中的递归函数。
简单来说,递归函数就是自己调用自己,然后在一定条件下会停止或者跳转递归。
这个例子简单的利用递归函数实现了一个小需求,希望这篇文章对初学前端的小伙伴有帮助。