Recursão brilha em estruturas aninhadas ou em árvore.
Objetos aninhados
snippetJavaScript
function findAllCounts(obj) { let total = 0; for (const key in obj) { if (key === "count") total += obj[key]; else if (typeof obj[key] === "object" && obj[key] !== null) { total += findAllCounts(obj[key]); } } return total;}
Achatar arrays
snippetJavaScript
function flatten(arr) { let result = []; for (const item of arr) { if (Array.isArray(item)) result = result.concat(flatten(item)); else result.push(item); } return result;} flatten([1, [2, [3, 4]], 5]); // [1, 2, 3, 4, 5]// Ou arr.flat(Infinity)
Travessia do DOM
snippetJavaScript
function walkDOM(node, callback) { callback(node); for (const child of node.children) { walkDOM(child, callback); }}
Combina recursão com Higher-Order Functions. Veja também DOM.
Lista encadeada
snippetJavaScript
function sumList(node) { if (node === null) return 0; return node.value + sumList(node.next);} function printReverse(node) { if (node === null) return; printReverse(node.next); console.log(node.value);}
Sistema de arquivos
snippetJavaScript
function getTotalSize(node) { if (node.type === "file") return node.size; return node.children.reduce((t, c) => t + getTotalSize(c), 0);}