1分钟了解js 递归

120 阅读1分钟

作用域

全局作用域 && 局部作用域

  • 全局作用域 就是在script标签内的都可以调用的变量
  • 局部变量 就是在函数内部声明的变量 其只作用于函数内部

作用域链

  • 访问规则
    • 假如当前 作用域内没有要访问的变量 则会向父级作用域查找 若没有 则继续向上查找 直到全局作用域没有 则会报错 也就是undefined
  • 赋值规则
    • 赋值 假如当前作用域没有要被赋值的变量是 同理 向上查找 直到全局作用域没有 则会在全局作用域声明并赋值

递归函数

写一个简单的递归

  • 求100的阶乘
    • function Jc (a) { if (a == 1){ return 1 } return a * JC(a - 1) }

    • 递归实际上是算法 程序调用自身称为递归

    • 将问题分为规模更小的相同问题

    • 持续分解,直到问题规模小到可以用非常简单直接的方式来解决 //需要在问题可以解决的时候返回 然后结束递归 否则就是死递归 类似死循环

    • 递归问题的分解方式非常独特,其算法方面的明显特 征就是:在算法流程中调用自身。递归为我们提供了一种对复杂问题的优雅解决方案,精妙的递归算法常会出奇简单,令人赞叹。