Recursão
Deslize para mostrar o menu
Recursão em programação refere-se à técnica em que uma função chama a si mesma para resolver uma instância menor do mesmo problema. É uma forma poderosa e elegante de resolver problemas que podem ser divididos em subproblemas menores do mesmo tipo.
Funções recursivas geralmente consistem em dois componentes:
-
Caso Base: Define a condição de parada para a função recursiva. Quando o caso base é atingido, a função para de chamar a si mesma e retorna um valor específico. Isso é necessário para evitar recursão infinita.
-
Caso Recursivo: Define a lógica para dividir o problema em subproblemas menores e chamar a função recursivamente com entradas reduzidas. O caso recursivo permite que a função avance em direção ao caso base.
O fatorial de um número n é definido da seguinte forma:
n! = n*(n-1)*(n-2)*..*2*1 = n*(n-1)!
main.cpp
12345678910111213141516171819#include <iostream> // Function to calculate factorial int factorial(int n) { // Base case: factorial of 0 or 1 is 1 if (n == 0 || n == 1) return 1; // Recursive case: multiply n with factorial of (n-1) std::cout << "Recursive Case: " << n << " * factorial(" << n - 1 << ")" << std::endl; return n * factorial(n - 1); } int main() { // Call the function std::cout << factorial(5) << std::endl; }
Caso Base: O caso base ocorre quando a entrada n é igual a 0 ou 1. Nesse caso, o fatorial é definido como 1. O caso base garante que a recursão termine e evita recursão infinita.
Caso Recursivo: O caso recursivo é a lógica para calcular o fatorial de n quando n é maior que 1. Envolve chamar a função fatorial recursivamente com n - 1 como argumento e multiplicar o resultado por n. Isso reduz o problema para um subproblema menor ao calcular o fatorial de um número menor.
Chamada da função com argumento igual a 5. Veja o processo passo a passo:
factorial(5)chamafactorial(4)e multiplica o resultado por 5.factorial(4)chamafactorial(3)e multiplica o resultado por 4.factorial(3)chamafactorial(2)e multiplica o resultado por 3.factorial(2)chamafactorial(1)e multiplica o resultado por 2.factorial(1)é o caso base e retorna 1.- a multiplicação continua de volta na cadeia, resultando no fatorial final de
5, que é igual a120.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo