递归函数
1.底层:自己调用自己
2.递归三步曲{
①.先找停止条件(一般为开头的第一项)
②.找到每个结果与上一行的关系
③.写输出语句
}
3.举例
//1.高度100米,每次落下弹起时,是原来高度的一半,第7次弹起时高度多少,使用递归实现
//寻找关系:第一次,50,第二次,25,第三次,12.5·····
//可得推论:每一个结果,都等于上一个结果*0.5
function fu(n){
if(n===0)return 100;//停止条件
return 0.5*fu(n-1);//关系
}
var res =fu(7)//返回值
console.log(res);
//结果为:0.78125
//2.斐波那契
//1,1,2,3,5,8,13······
//停止条件:n1=1,n2=1
//寻找关系:1+1=2 ,1+2=3,2+3=5,3+5=8····
//可得推论:每一个结果都等于前两项之和 f(n-1)+f(n-2)
function fu(n){
if(n===1||n===2){//停止条件
return 1;
}
return f(n-1)+f(n-2);//关系
}
var res =fu(7)
console.log(res);
//结果为:13
//3.阶乘
//5!=1*2*3*4*5
//4!=1*2*3*4
//3!=1*2*3
//2!=1*2
//1!=1//停止条件
//寻找关系:前一项的阶乘×于本身
function fu(n){
if (n === 1) {
return 1;
}
return n * fu(n-1)
}
var res = fu(5)
console.log(res);
//结果为:120
递归的方法有很多,以上仅仅是我的个人理解,如果不好找到结束条件,那就自己定义一个,仅供参考,如有错误多谢指正!