关于JS中递归的相关问题

302 阅读1分钟

递归基础

递归概念

在程序中直接或间接的调用自己

  1. 直接调用自己
  2. 间接调用自己

递归的理解

  • 递归函数必须接收参数。(比如要递归谁)
  • 在递归函数定义开始,应该有一个判断条件,当参数满足条件时,函数停止运行,并返回出一个值
  • 每次循环再调用自己并传参
  • 当参数满足初始判断条件,递归停止。

简单的递归练习

求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
*/

最简单的一句话介绍递归:函数内部自己调用自己

递归必须要有判断条件,不加判断会死;