Em programação de computadores , a recursão ocorre quando uma função ou procedimento - em outras palavras, uma seqüência de instruções para realizar uma função específica - chama-se , direta ou indiretamente ? . A função ou o procedimento modifica o valor do parâmetro ( s ) que passou para a primeira vez que é chamado e pede -se com o novo valor (es ) . Fatoriais
O exemplo clássico de recursão envolve fatoriais de computação . A fatorial é o produto de qualquer número inteiro positivo dado multiplicado por todos os números inteiros menores. O factorial de 5 é de 5 * 4 * 3 * 2 * 1 , o factorial de 4 é 4 * 3 * 2 * 1 e assim por diante . O factorial de qualquer número é igual ao número multiplicado pelo fatorial do número imediatamente abaixo dela . Em outras palavras , fatorial ( 5 ) é o mesmo que 5 * fatorial ( 4 ) , fatorial ( 4 ) é o mesmo que 4 * fatorial ( 3 ) e assim por diante , de modo que uma função factorial simples pode ser escrito como :
int fatorial (int n) {return n * fatorial (n - 1 );}
Caso Base
O problema com esta função simples , no entanto, é que ele não tem nenhum caso base, ou condição para contá-la quando parar. Tal como está, a função continuará a chamar-se quando n chegou a zero e além em números negativos , retornando fatoriais absurdas . Na realidade, a função fatorial precisa parar quando n = 1 , então a função fatorial real pode ser escrito como :
int fatorial (int n) {if (n == 1 ) {return 1; } else {return n * fatorial (n - 1 );}}
Em Inglês, a função examina o número passado para ele como um parâmetro e , se o número é 1, retorna 1 . Caso contrário, a função retorna o número multiplicado pelo fatorial de um número negativo.
Programa Stack
Todos os programas recursivos deve ter um ponto final , ou base caso, onde a operação é tão trivial que uma resposta pode ser devolvido diretamente. Recursão funciona através da adição , ou empurrar , e remover , ou estalar , armações individuais para e a partir de uma estrutura de dados conhecida como uma pilha do programa . Há apenas uma quantidade finita de espaço na pilha do programa , de modo que , sem um caso base, um programa recursivo simplesmente continuar funcionando até que a pilha transbordou .
Prós e Contras
< br >
recursão é difícil de entender , porque não é intuitivo e pode parecer , à primeira vista, para envolver a lógica circular ou falsa. De acordo com a IBM , a recursão é raramente usado por programadores em linguagens de programação imperativas - que não especificam uma seqüência explícita das etapas para realizar - porque acreditam que é lento e espaço resíduos . No entanto, se implementado corretamente , a recursão é uma técnica de programação poderosa que pode agilizar algumas tarefas de programação.