遞迴演算法
-
什麼是遞迴
在執行過程中,自身呼叫自身。
一個條件:至少應該有一個結束條件。
例子:
-
你和你的朋友在一個地方約見面,他已經到了,你距離你們約定的地方還差100步。
那麼最後這一百步,你肯定是需要一步一步走過去。那麼我們們如何用遞迴的方式來實現最後這100步呢
示例程式碼:
function walk(step) { if (step == 0) { console.log('已經到達目的地') }else { step-- console.log(`已經走了一步,還剩${step}步`) walk(step) } } walk(100)
遞迴一般應用在什麼場景下
在有很多層級結構,並且每個層級的結構都是大致相同的。一般情況下,前後都有依賴。
遞迴的方式和普通的函式呼叫的方式,遞迴效率更低。
所以呢,在日常的開發當中,我們不要濫用遞迴。
-
某一個數與另外一個數之間的和怎麼遞迴實現
示例程式碼:
// 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)
-
將列表型的資料轉化成樹形資料
示例程式碼:
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 }