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))
  • 相关阅读:
    ## js 性能 (未完。。。)
    React 创建元素的几种方式
    Json 与 javascript 对象的区别
    js 基本数据类型
    第十三章 事件
    第十二章 DOM2和DOM3
    第十一章 DOM扩展
    第十章 DOM
    第八章 BOM
    第七章 函数表达式
  • 原文地址:https://www.cnblogs.com/peiyao/p/7382851.html
Copyright © 2011-2022 走看看