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))
  • 相关阅读:
    排序算法与数据结构复习总结
    Kafka知识总结及面试题
    深入理解Redis系列之事务
    深入理解Redis系列之持久化
    基于数据库、redis和zookeeper实现的分布式锁
    深入理解MySQL系列之优化
    Mysql-主从复制(Docker)
    Mysql-GTID主从复制
    Ansible基础
    Nginx + php-fpm源码编译
  • 原文地址:https://www.cnblogs.com/peiyao/p/7382851.html
Copyright © 2011-2022 走看看