Funções Recursivas
Parte da seção Lógica & Fluxo do Journey de PHP da Coddy — lição 8 de 68.
A recursão é uma técnica de programação onde uma função chama a si mesma para resolver um problema. Isso cria um comportamento semelhante a um loop, mas em vez de usar loops tradicionais, a função invoca a si mesma repetidamente com parâmetros modificados até chegar a uma solução.
Toda função recursiva deve ter dois componentes essenciais para funcionar corretamente:
Caso Base: Esta é a condição que interrompe a recursão. Sem ela, a função se chamaria infinitamente, fazendo com que seu programa trave. O caso base define quando a função deve retornar um resultado em vez de se chamar novamente.
Passo Recursivo: É aqui que a função chama a si mesma com uma versão modificada do problema original, movendo-se gradualmente em direção ao caso base.
Aqui está um exemplo simples de uma função recursiva que calcula um fatorial:
<?php
function factorial($n) {
// Caso base: o fatorial de 1 é 1
if ($n <= 1) {
return 1;
}
// Passo recursivo: n! = n * (n-1)!
return $n * factorial($n - 1);
}
echo factorial(5); // Saída: 120
?>Neste exemplo, factorial(5) chama factorial(4), que chama factorial(3), e assim por diante, até chegar a factorial(1) (o caso base). Então os resultados se multiplicam de volta: 1 × 2 × 3 × 4 × 5 = 120.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Desafio
FácilCrie uma função recursiva chamada sumDigits que receba um número inteiro positivo e retorne a soma de seus dígitos. A função deve usar recursão para decompor o número dígito por dígito.
Você receberá uma entrada: um número inteiro positivo. Leia a entrada, chame sua função recursiva com esse número e imprima a soma de seus dígitos.
Formato de entrada: Uma linha contendo um número inteiro positivo
Saída esperada: A soma de todos os dígitos do número
Folha de consulta
Recursão é uma técnica de programação onde uma função chama a si mesma para resolver um problema. Toda função recursiva precisa de dois componentes:
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 parâmetros modificados, movendo-se em direção ao caso base.
Exemplo de uma função fatorial recursiva:
<?php
function factorial($n) {
// Caso base: o fatorial de 1 é 1
if ($n <= 1) {
return 1;
}
// Passo recursivo: n! = n * (n-1)!
return $n * factorial($n - 1);
}
echo factorial(5); // Saída: 120
?>Experimente você mesmo
<?php
// Ler a entrada
$number = intval(fgets(STDIN));
// TODO: Crie sua função recursiva sumDigits aqui
// Chame a função e exiba o resultado
echo sumDigits($number);
?>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
1Funções Avançadas
Funções AnônimasClosures e 'use'Arrow FunctionsFunções de CallbackUsando 'call_user_func'Funções VariáveisPassagem por ReferênciaFunções RecursivasRecapitulação: Mix de Funções4Arrays Multidimensionais
Criando um Array 2DAcessando Elementos de um Array 2DModificando Elementos de um Array 2DIterando com Loops AninhadosArrays Associativos 2DRecapitulação: Exercício de Grade Simples2Manipulações Avançadas de Arrays
Adicionando com 'array_push'Removendo com 'array_pop'Adicionando com 'array_unshift'Removendo com 'array_shift'Mesclando Arrays IndexadosMesclando Arrays AssociativosExtraindo com 'array_slice'Valores com 'in_array'Chaves com 'array_search'Recapitulação: Exercício de Playlist3Ordenação de Arrays
Ordenar Arrays Indexados (Crescente)Ordenar Arrays Indexados (Decrescente)Ordenar Arrays Associativos por ValorOrdenar Arrays Associativos por ChaveOrdenação por Ordem NaturalOrdenação Personalizada com 'usort'Recapitulação: Ordenação de Leaderboard