国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

javascript遞歸

terro / 3210人閱讀

摘要:調用自身的函數稱為遞歸函數缺點遞歸占用的內存和資源比較多,同時難以實現和維護。優點在處理之類的樹形結構數據時,非常適合用遞歸。案例數字的階乘通過乘以進行計算獲取存在某個字段的節點某個數或者遞歸實現數組轉樹結構調用

調用自身的函數稱為遞歸函數

缺點:遞歸占用的內存和資源比較多,同時難以實現和維護。

優點:在處理DOM之類的樹形結構數據時,非常適合用遞歸。

案例 數字 n 的階乘通過乘以 1 2 3 *... n 進行計算
var f = function (x) {  
  if (x === 1) {  
    return 1
  } else {  
    return x * f(x - 1)
  }  
}

const result = f(n)
獲取存在某個字段的節點
let new_array = []

function _getChilds(data){
  if(data.ObjType == "某個數"){
    new_array.push(data)
  }
  if(data.Childs && data.Childs.length > 0){
    getChilds(data.Childs)
  }
}

function getChilds(childData){
  for(let i = 0; i < childData.length; i++){
      _getChilds(childData[i])
  }
  // 或者
  // childData.map(item => _getChilds(item))
}
js遞歸實現數組轉樹結構
const jsonArr = [
  {name:"a",id:1,pid:0},
  {name:"b",id:2,pid:1},
  {name:"c",id:3,pid:1},
  {name:"d",id:4,pid:2},
  {name:"e",id:5,pid:2}
]

function fn(data, pid) { 
  let result = []
  let temp
  for (let i = 0; i < data.length; i++) { 
    if (data[i].pid == pid) { 
      let obj = {
        "name": data[i].name,
        "id": data[i].id
      }
      temp = fn(data, data[i].id)
      if (temp.length > 0) { 
        obj.children = temp
      } 
      result.push(obj)
    } 
  } 
  return result
}

//調用
const result = fn(jsonArr,0)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/91328.html

相關文章

  • JavaScript專題之遞歸

    摘要:專題系列第十八篇,講解遞歸和尾遞歸定義程序調用自身的編程技巧稱為遞歸。然而非尾調用函數,就會創建多個執行上下文壓入執行上下文棧。所以我們只用把階乘函數改造成一個尾遞歸形式,就可以避免創建那么多的執行上下文。 JavaScript 專題系列第十八篇,講解遞歸和尾遞歸 定義 程序調用自身的編程技巧稱為遞歸(recursion)。 階乘 以階乘為例: function factorial(n...

    asoren 評論0 收藏0
  • 翻譯連載 | 第 9 章:遞歸(上)-《JavaScript輕量級函數式編程》 |《你不知道的JS》

    摘要:一旦我們滿足了基本條件值為,我們將不再調用遞歸函數,只是有效地執行了。遞歸深諳函數式編程之精髓,最被廣泛引證的原因是,在調用棧中,遞歸把大部分顯式狀態跟蹤換為了隱式狀態。 原文地址:Functional-Light-JS 原文作者:Kyle Simpson-《You-Dont-Know-JS》作者 關于譯者:這是一個流淌著滬江血液的純粹工程:認真,是 HTML 最堅實的梁柱;...

    MasonEast 評論0 收藏0
  • javascript中的遞歸

    摘要:二項目中用到的幾個經典的遞歸求的和分析假設遞歸函數已經寫好為,即,就是求的和。遞歸函數實現每天凌晨定時啟動定時器執行代碼分析假設遞歸函數已經寫好了。 一、遞歸的概念 在程序中函數直接或者間接調用自身的一種方法,就叫做遞歸。它通常把一個大型復雜的問題轉化為一個與原問題相似的規模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程中所需要的多次重復計算,大大減少了程序的代碼了。 二、...

    acrazing 評論0 收藏0
  • JavaScript 數據結構與算法之美 - 遞歸

    摘要:遞歸常見問題及解決方案警惕堆棧溢出可以聲明一個全局變量來控制遞歸的深度,從而避免堆棧溢出。文章輸出計劃數據結構與算法之美的系列文章,堅持天左右更新一篇,暫定計劃如下表。 showImg(https://segmentfault.com/img/bVbuF9e?w=900&h=500); 前言 算法為王。 排序算法博大精深,前輩們用了數年甚至一輩子的心血研究出來的算法,更值得我們學習與...

    Rocko 評論0 收藏0
  • LeetCode 之 JavaScript 解答第21題 —— 合并兩個有序鏈表(Merge Two

    摘要:什么意思呢比如上方合并鏈表的代碼,分別明確函數的參數和返回值是什么參數是兩個合并的鏈表結點頭結點。返回值是合并后的鏈表。 Time:2019/4/9Title: Merge Two Sorted ListsDifficulty: EasyAuthor: 小鹿 題目:Merge Two Sorted Lists Merge two sorted linked lists and re...

    wdzgege 評論0 收藏0
  • 算法系列——JavaScript快速排序思想實現

    摘要:源碼實現快速排序理論理解起來很容易,但經常是實際寫代碼,無從下手,下面是我根據快排的步驟實現的遞歸快速排序。合并第一次快速排序的,,數組。 原理 快速排序離不開遞歸的思想,你如果不了解遞歸,可以結合我另外一篇文章來學習 算法入門之遞歸分而治之思想的實現 網上有有趣的動態圖來表示快速排序,但其實我們大部分程序員都是腦子不太好使那種,即使看了形象生動的動態圖,還是想不到具體實現思路。 排序...

    lentrue 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<