Mas o que é recursividade ?
De acordo com o Wikipedia, recursividade nada mais é do que:
Um termo geralmente usado para descrever o processo de repetição de um objeto de um jeito similar ao que já fora mostrado. Um bom exemplo disso são as imagens repetidas que aparecem quando dois espelhos são apontados um para o outro.
Mas e em JS/TS?
Recursividade em JS/TS nada mais são do que funções ou tipagens que se repetem até a instruçāo terminar, podendo estar presente em funções, nas chamadas funções recursivas, e em tipagens.
Exemplo
Suponhamos que temos um Array de Arquivos(File) e Pastas(Folder), e precisamos mostrar um console.log()
com o nome de cada um:
Primeira coisa que precisamos é um criar uma Tipagem para o que iremos receber em nossa função recursiva:
type Item = {
id: string
name: string
// Se tem Children é um Folder, se não é um File.
children?: Item[]
}
Como você pode ver, utilizamos a recursivdade pois setamos o tipo para children
como Item[]
, ou seja, criando uma recursividade, um encadeamento.
E para nossa função teremos algo desse tipo:
const showFileAndFolders = (items: Item[]) => {
// Percorrer todos os items.
items.forEach(item => {
// Se tem Children é um Folder, se não é um File.
if (item.children) {
// Sendo um folder mostro o nome e chamo novamente a função para contemplar o `children`
console.log('Folder: ', item.name)
// Recursividade, chamamos a função dentro dela mesma.
showFileAndFolders(item.children)
return;
} else {
// Sendo um file mostro o nome
console.log('File: ', item.name)
return;
}
})
}
Outros exemplos
Utilidades famosas da recursividade também podem ser encontradas em casos como:
Sequência de Fibonacci
const generateFibonacci = (num: number) => {
if (num <= 1) return n;
return generateFibonacci(num - 1) + generateFibonacci(num - 2);
}
Top comments (0)