一.什么是递归?
递归,就是在运行的过程中不断地调用自己。递归有两个过程,简单的说一个是递的过程,一个是归的过程。简单用代码来理解:
public void fun(参数) {
if (终止条件) {
return;
}
fun(参数);
(其他判断条件或语句);
}
** 当第一次进入函数时,先判断是否符合终止条件,符合则直接结束函数,不符合入下一语句,调用自己重新
进入下一层自身函数,(注意这是最外一层将不向下继续执行语句,外层卡在fun(参数处)),这个调用自
己 进入自身函数的操作过程即为“递”的过程。假设进入下一层后符合终止条件,返回结果,此时之前进入
自身函数执行完成返回最外一层函数,最外一层函数递归调用处得到结果,(即内层函数执行完成得到结果返
回值),这个过程即为“归”的过程。这时最外一层函数才能继续 下一语句,直至函数运行完成
-
使用递归计算阶乘
function jc(n){ if(n==1){ return 1; } return n*jc(n-1) } var res=jc(4); console.log("res="+res); -
使用递归计算斐波那契数列
//1 1 2 3 5 8 13:每一个数等于前两个数之和 function fun(n){ if(n==2 || n==1){ return 1; } return fun(n-1)+fun(n-2); } console.log(fun(8))