Introdução à Recursividade
Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 47 de 65.
Recursão é uma técnica de programação onde uma função chama a si mesma para resolver um problema. Pense nisso como olhar para dois espelhos um de frente para o outro - cada reflexo contém uma versão menor da mesma imagem, criando um loop infinito até que os reflexos se tornem pequenos demais para serem vistos.
Toda função recursiva precisa de dois componentes essenciais para funcionar corretamente. O caso base é a condição que interrompe a recursão - é como o ponto onde os reflexos no espelho se tornam pequenos demais para importar. Sem um caso base, sua função se chamaria para sempre, eventualmente travando seu programa.
O passo recursivo é onde a função chama a si mesma com uma versão modificada do problema original. Cada vez que a função chama a si mesma, ela deve estar trabalhando em uma versão menor ou mais simples do problema, movendo-se gradualmente em direção ao caso base.
Imagine que você está procurando suas chaves em uma pilha de papéis. Você poderia verificar o papel do topo e, se suas chaves não estiverem lá, faria a mesma coisa com a pilha restante (que agora é um papel menor). Você continuaria repetindo esse processo até encontrar suas chaves ou não restarem mais papéis para verificar.
Esta abordagem de decompor um problema grande em problemas menores e idênticos é o que torna a recursão tão poderosa para certos tipos de desafios de programação.
Folha de consulta
Recursão é uma técnica de programação onde uma função chama a si mesma para resolver um problema, dividindo-o em problemas menores e idênticos.
Toda função recursiva precisa de dois componentes essenciais:
Caso base: A condição que interrompe a recursão para evitar loops infinitos.
Passo recursivo: Onde a função chama a si mesma com uma versão modificada do problema original, movendo-se gradualmente em direção ao caso base.
Experimente você mesmo
Esta lição não inclui um desafio de código.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Manipulação Avançada de Listas
Propriedades de Lista: first & lastEstado da Lista: isEmpty & isNotEmptyInvertendo uma ListaAdicionando a uma Lista: insertRemoção em Listas: removeWhereBuscando em uma Lista: indexOfOrdenando uma ListaEmbaralhando uma ListaRecapitulação - Organizador de Listas4Manipulação Avançada de Mapas
Iterando sobre um MapVerificando Chaves e ValoresPropriedades do Map: keys & valuesAdição Condicional: putIfAbsentRemovendo Entradas de um MapMaps AninhadosRecapitulação - Atualização de Inventário7Funções Avançadas
Funções AnônimasPassando Funções como ArgumentosEntendendo ClosuresIntrodução à RecursividadeFunção Recursiva: Contagem RegressivaFunção Recursiva: FatorialRecapitulação - Processador de Listas2Operações Funcionais em Listas
Transformando com 'map'Filtrando com 'where'Usando '.toList()'Verificando Condições com 'any'Condições com 'every'Encontrando com 'firstWhere'Recapitulação - Filtragem de Dados5Projeto: Cálculo de Carrinho de Compras
Configuração do ProjetoAdicionando Itens ao Carrinho3Conjuntos
O que é um Conjunto?Criando um ConjuntoAdicionando e Removendo de ConjuntosVerificando Elementos em um ConjuntoConvertendo uma Lista para um ConjuntoUnião de ConjuntosInterseção de ConjuntosDiferença de ConjuntosRecapitulação - Lista de Convidados Únicos