zoukankan      html  css  js  c++  java
  • 斐波那契的javascript实现和优化

    斐波那契是1,1,2,3,5,8,13,21。。。。。 即前两项之和为第三项。程序实现如下

    普通版的斐波那契:

     1 <script type="text/javascript">
     2 function f(num)
     3 {
     4 
     5   if(num<=0)
     6 
     7  {
     8 
     9     console.log('请输入大于0的正整数');
    10       return ; 
    11 
    12   }
    13 
    14    else if(num<=2 && num>0)
    15   {
    16      return 1;
    17  }
    18    else
    19  {
    20   return f(num-2)+f(num-1); 
    21    }
    22 }
    23 
    24 </script>

    用三目运算符优化如下:

     1 <script type="text/javascript">
     2 function f(num)
     3 {
     4 
     5     if(num<=0)
     6    {
     7       console.log('请输入大于0的正整数');
     8       return ; 
     9     }
    10   return num<=2 && num>0 ? 1 : f(num-1)+f(num-2); 
    11 }
    12 
    13 
    14 </script>

    但是这样函数内部调用了函数的名称,假设该函数要改名,那就相当不完善了,函数内部和函数名紧紧耦合在一起了。所以可以用arguments.callee来表示该函数本身

    进一步优化如下

     1 <script type="text/javascript">
     2 function f(num)
     3 {
     4 
     5     if(num<=0)
     6    {
     7       console.log('请输入大于0的正整数');
     8       return ; 
     9     }
    10 
    11   return num<=2 && num>0 ? 1 : arguments.callee(num-1)+arguments.callee(num-2); 
    12 }
    13 
    14 
    15 </script>

    至此,简单的优化就做成了。

    Top
    收藏
    关注
    评论
  • 相关阅读:
    Linux autojump命令
    Linux rpmbuild命令
    RPM包制作教程
    LSP(分层服务提供程序)
    WPAD 的原理及实现
    在OpenSSL中添加自定义加密算法
    Openssl sess_id命令
    hdu1878欧拉回路(DFS+欧拉回路)
    好代码的伪科学定义
    MySQL安装过程中出现“APPLY security settings错误”的解决方式
  • 原文地址:https://www.cnblogs.com/thinksley/p/2953504.html
Copyright © 2011-2022 走看看