zoukankan      html  css  js  c++  java
  • callee和斐波那契数列

    如果一对兔子每月生一对兔子;一对新生兔,从第二个月起就开始生兔子;假定每对兔子都是一雌一雄,试问一对兔子,第n个月能繁殖成多少对兔子?

    ———————————————————————————————————————————————————————————————————

    典型斐波那契数列,用递归实现是so easy,在JS中实现递归通常用arguments.callee

    这是因为早期JS没有具名函数,无法使用函数名进行递归,于是产生了arguments.callee

    JS严格模式禁用了arguments.callee,这意味着无法在匿名函数中调用自身。

    为什么要禁用呢?因为普通写法性能上比arguments更优,而且arguments.callee 还会带来函数引用优化问题和尾递归优化的问题

    ————————————————————————————————————————————————————————————————————

    上述兔子问题,用递归的话,不到100次递归成功搞垮了我的浏览器,函数调用的次数呈指数级增长,性能堪忧,所以,,,,下面是斐波那契的非递归实现:

    用迭代消除递归:

    性能提升了几百万倍甚至更多

  • 相关阅读:
    矩阵树定理
    随机乱搞算法
    数学
    BZOJ——3412: [Usaco2009 Dec]Music Notes乐谱
    BZOJ—— 3402: [Usaco2009 Open]Hide and Seek 捉迷藏
    洛谷—— P2884 [USACO07MAR]每月的费用Monthly Expense
    洛谷—— P2417 课程
    洛谷—— P1577 切绳子
    COGS 2598. 美丽的感觉
    10.23 模拟赛
  • 原文地址:https://www.cnblogs.com/dll-ft/p/5845908.html
Copyright © 2011-2022 走看看