递归基础
递归概念
在程序中直接或间接的调用自己
- 直接调用自己
- 间接调用自己
递归的理解
- 递归函数必须接收参数。(比如要递归谁)
- 在递归函数定义开始,应该有一个判断条件,当参数满足条件时,函数停止运行,并返回出一个值
- 每次循环再调用自己并传参
- 当参数满足初始判断条件,递归停止。
简单的递归练习
求1-100的和
递归函数
function sum(n){
if(n==1){
return 1;
}
return sum(n-1) + n;
}
console.log(sum(100));
深拷贝,使用递归方式
递归函数
function clone(o1,o2){
for(var key in o2){
if(typeof o2[key] == 'object'){
o1[key] = {};
clone(o1[key],o2[key])
}else{
o1[key] = o2[key];
}
}
}
执行代码,查看执行结果
function fn1 () {
console.log(111)
fn2()
console.log('fn1')
}
function fn2 () {
console.log(222)
fn3()
console.log('fn2')
}
function fn3 () {
console.log(333)
fn4()
console.log('fn3')
}
function fn4 () {
console.log(444)
console.log('fn4')
}
fn1()
/*
** 执行结果为:
111
222
333
444
fn4
fn3
fn2
fn1
*/
最简单的一句话介绍递归:函数内部自己调用自己
递归必须要有判断条件,不加判断会死;