• 斐波那契的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
    收藏
    关注
    评论
  • 相关阅读:
    SQLServer 2008 还原数据库备份版本不兼容的问题
    全排列函数
    n & 1
    最长公共子序列(LCS)最长递增子序列(LIS)
    unity3DGI
    多继承的缺点
    JSON文件导入Unity3d中是空的的问题
    丑数
    整数中1出现的次数
    检测鼠标是否在UI上unity
  • 原文地址:https://www.cnblogs.com/thinksley/p/2953504.html
Copyright © 2020-2023  润新知