zoukankan      html  css  js  c++  java
  • 递归算法

    递归算法

    1. 什么是递归

      在运行过程中,自身调用自身。

      一个条件:至少应该有一个结束条件。

    例子

    1. 你和你的朋友在一个地方约见面,他已经到了,你距离你们约定的地方还差100步。
      那么最后这一百步,你肯定是需要一步一步走过去。

      那么咱们如何用递归的方式来实现最后这100步呢

      示例代码:

      function walk(step) {
          if (step == 0) {
              console.log('已经到达目的地')
          }else {
              step--
              console.log(`已经走了一步,还剩${step}步`)
              walk(step)
          }
      }
      walk(100)
      

      递归一般应用在什么场景下

      在有很多层级结构,并且每个层级的结构都是大致相同的。一般情况下,前后都有依赖。

      递归的方式和普通的函数调用的方式,递归效率更低。

      所以呢,在日常的开发当中,我们不要滥用递归。

    2. 某一个数与另外一个数之间的和怎么递归实现

      示例代码:

      // min 最小值
      // max 最大值
      
      function sum(min, max) {
         if (min == max) {
            return max
         }else {
            return min + sum(min + 1, max)
         }
      }
      
      let result = sum(1,100)
      console.log(result)
      
    3. 将列表型的数据转化成树形数据

      示例代码:

      export function tranListToTreeData(list, rootValue) {
       var arr = []
       list.forEach(item => {
           if (item.pid === rootValue) {
               const children = tranListToTreeData(list, item.id)
               if (children.length) {
                   item.children = children
               }
               arr.push(item)
           }
      })
      return arr
      }
      
  • 相关阅读:
    12.27 cf div3 解题报告
    网络流24题 P2754 [CTSC1999]家园
    P3690 【模板】Link Cut Tree (动态树)
    P2147 [SDOI2008]洞穴勘测
    P3203 [HNOI2010]弹飞绵羊
    P4172 [WC2006]水管局长
    P3979 遥远的国度
    P3128 [USACO15DEC]最大流Max Flow
    P3178 [HAOI2015]树上操作
    [SDOI2014]旅行
  • 原文地址:https://www.cnblogs.com/Superstarlee/p/14727980.html
Copyright © 2011-2022 走看看