美文网首页
关于阶乘的递归算法

关于阶乘的递归算法

作者: fuheideMayuyu | 来源:发表于2018-12-19 15:34 被阅读0次

方法1:

function factorial(num){
  if(num<=1){
    return 1
  } else {
     return num*factorial(num-1)
  }
}

这种方法虽然可以实现阶乘,但是有一个缺点就是耦合度太高,函数名称不可改变。
方法2:

function factorial(num){
  if(num<=1){
    return 1
  } else {
    return num*arguments.callee(num-1)
  }
}

对于函数进行解耦,函数名无论怎么变都不影响函数功能的实现,但是这种方法也有一个问题就是访问arguments的操作,因为它是一个很大的对象,每次递归时都需要重新创建,对于浏览器性能影响较大,还会影响闭包,所以我们进一步优化。

方法3:

function factorial(num){
  if(num<=1){
    return 1
  }
  let res = 1
  return (function fn(){
    res*=num
    num--
    if(num!=0){
      fn()
    }
  })()
}

相关文章

  • C++ 递归算法

    递归算法,尾递归算法求阶乘!

  • golang学习笔记之-递归算法

    递归算法求5的阶乘

  • 关于阶乘的递归算法

    方法1: 这种方法虽然可以实现阶乘,但是有一个缺点就是耦合度太高,函数名称不可改变。方法2: 对于函数进行解耦,函...

  • 专题:递归与累加阶乘

    递归实现累加和阶乘 累加核心代码: 阶乘的核心代码: 阶乘的非递归实现思路: 阶乘的非递归实现核心代码:

  • 递归实现 n!

    递归的特点: 自己调用自己 设定终止条件 优点:算法简单缺点:效率低下 用递归实现阶乘 n! 用 for 循环实现...

  • 递归算法---阶乘(一)

    递归算法:就是一种直接或者间接调用自身的算法。实现过程:一般通过函数或者子过程来完成,在函数或子过程的内部,编写代...

  • 递归算法:求阶乘

    1、环境配置: 系统:win10 编程语言:C++ 编译器:DevC++ 2、算法思想: 将n的阶乘看成是n乘n-...

  • 【python】递归思想和快速排序法

    一、递归思想 递归思想,其实就是自己调用自己。 上图中,我们写了个简单的递归函数,实现阶乘的算法;但程序会报错,显...

  • 结合LeetCode题库分析递归算法(一)

    递归算法:即一个程序反复调用自身的算法。 以一个经典阶乘为例,我们都知道阶乘 直到0!= 1 是我们都知道的,也就...

  • python递归求阶乘的方法

    python递归求阶乘的方法 阶乘:例如 5! 指的是“5的阶乘”,即 5! = 1*2*3*4*5。 “递归”就...

网友评论

      本文标题:关于阶乘的递归算法

      本文链接:https://www.haomeiwen.com/subject/blyjkqtx.html