zoukankan      html  css  js  c++  java
  • 453

    w调用函数次数的计算。

    JavaScript: The Good Parts

    <script>
    var w = 0;
    var w0 =0;
    var w10 =0;

    var fibonacci = function (n) {
    w++
    console.log(n)
    if(n==0)w0++
    if(n==10)w10++

    return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2);
    };

    for (var i = 0; i <= 10; i += 1) {
    document.writeln('// ' + i + ': ' + fibonacci(i));
    }

    console.log(w)
    console.log(w0)
    console.log(w10)

    </script>

    0 1
    1 1
    2 1 1 2 1+2=3
    3 2 1 3 1+4=5
    4 3 2 5 1+8=9
    5 5 3 8 1+14=15
    6 8 5 13 1+24=25
    7 13 8 21 1+40=41
    8 21 13 34 1+66=67
    9 34 21 55 1+108=109
    10 55 34 89 1+176=177
            453


    <script type="text/javascript">
    <!--
        var w = function(n){
            return n<2 ? 1 : w(n-1)+w(n-2) 
        }
    //-->
    </script>

    4.15. Memoization

    Functions can use objects to remember the results of previous operations, making it possible to avoid unnecessary work. This optimization is called memoization. JavaScript's objects and arrays are very convenient for this.

    Let's say we want a recursive function to compute Fibonacci numbers. A Fibonacci number is the sum of the two previous Fibonacci numbers. The first two are 0 and 1:

    var fibonacci = function (n) {
        return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2);
    };
    
    for (var i = 0; i <= 10; i += 1) {
        document.writeln('// ' + i + ': ' + fibonacci(i));
    }
    
    // 0: 0
    // 1: 1
    // 2: 1
    // 3: 2
    // 4: 3
    // 5: 5
    // 6: 8
    // 7: 13
    // 8: 21
    // 9: 34
    // 10: 55

  • 相关阅读:
    js格式化时间和时间操作
    java链接FTP实现上传和下载
    JQuery 对 Select option 的操作
    利用set实现去重
    数组去重的五个办法
    JavaScript实现360度全景图片展示效果
    对于行高(line-height)的一些理解
    Flex 布局教程:语法篇
    学习Javascript闭包
    MySQL explain字段解释
  • 原文地址:https://www.cnblogs.com/rsapaper/p/6395941.html
Copyright © 2011-2022 走看看