zoukankan      html  css  js  c++  java
  • 递归

    1.概念:

      当函数直接或间接调用自己的时候,则发生了递归

    2.场景:

      (1)数据的定义是按递归定义的。(Fibonacci函数)

      (2)问题解法按递归算法实现。(回溯)

      (3)数据的结构形式是按递归定义的。(树的遍历,图的搜索)

    3.缺点:

      运行效率较低,递归次数过多容易造成栈溢出等

    4.例子:

      (1)斐波那契 1、1、2、3、5、8、13、21...    

    const a = function (n){
        if (n == 0) {
            return n;
        }else if (n == 1) {
            return n;
        }else{
            return a(n-1)+a(n-2);
        }
    }
    //console.log(a(8))

      (2)找出传入值的一个key值

    function a(data,item){
        var arr = [];
        if (argular.isArray(data)) {
            data.forEach(function(n){
                if (n === item) {
                    return data[item];
                }else if (argular.isArray(n) || angular.isObject(n)) {
                    return a(n,item)
                }
            })
        }else{
            for (var key in data) {
                if (key === item) {
                    arr.push(data[item]);
                    console.log(arr)
                    return data[item];
                }else if (argular.isArray(key) || angular.isObject(key)) {
                    return a(data[key],item);
                }
            }
        }
    }
    
    var data = {a:'1010',b:[{name:'b',age:'12',money:'20'},{name:'cc',age:'14',money:'30'}]}
    
    a(data,'money')

      (3)求数组中的最大数

    function maxNum(arr,len) {
        if (len == 1) {
            return arr[0]
        }else{
                let Max1 = maxNum(arr,len-1);
                return (Max1 > arr[len-1]) ? Max1 : arr[len-1];
        }
    }
    var a = [10,20,6,9,4,8];
    console.log(maxNum(a,6))
  • 相关阅读:
    Windows下编译TensorFlow1.3 C++ library及创建一个简单的TensorFlow C++程序
    flask自动重启与配置文件导入,路由重定向(8)
    go(4)字符串的应用
    go(3)变量的应用与数据类型
    go(2)输出,转义,字符接收
    go(1)
    tornado集成wtforms
    HTML5笔记007
    HTML5笔记006
    HTML5笔记005
  • 原文地址:https://www.cnblogs.com/peiyao/p/7382851.html
Copyright © 2011-2022 走看看