Um gosto de recursão
Video: Função recursiva em C++
Conteúdo
Recursão é um grande, palavra assustadora que você ouve frequentemente sobre a programação, especialmente o tipo frustrante de programação que eles ensinam na universidade. Embora seja um conceito fácil de descrever, é realmente uma mente-ventilador quando se trata de compreender como recursão funciona. A maioria das pessoas apenas aceitá-lo e seguir em frente. Aqui não!
Recursão é basicamente o processo de uma função que se autodenomina. Por exemplo:
vazio funct (int x) {funct (x) -}
Neste pedaço de código, você vê um exemplo terrível de uma função recursiva, mas serve para fins ilustrativos aqui: O Esta função () função chama a si mesmo. Isso é recursão. Agora o que acontece neste exemplo é basicamente um loop infinito, e, graças a uma coisa-ou-outra técnica, chamada de pointe pilhar, o computador, eventualmente, falha. Mas é apenas uma ilustração.
Para recursão para o trabalho, a função deve ter uma condição de resgate, assim como um loop. Portanto, quer o valor transferido para a função recursiva ou o seu valor de retorno deve ser testado. Aqui está um exemplo melhor de uma função recursiva:
vazio recursão (int x) {if (x == 0) voltar-else {puts ("Boop!") -recursion (- x) -}}
o recursão() função aceita o valor X. E se X é igual a zero, os prendedores de função. Caso contrário, a função é chamada novamente, mas o valor de X É reduzido. O operador de decremento prefixo é usado de modo a que o valor de X É reduzido antes a chamada é feita.
A amostra recursão() função cospe basicamente fora do texto Boop! um determinado número de vezes. Então se recursão() é chamado com o valor 10, você vê que o texto exibido dez vezes.
A parte louca sobre recursão é que a função continua chamando-se, envolvendo-se mais e mais, como se fosse em uma espiral. No exemplo anterior, a condição x == 1 finalmente desenrola essa confusão sinuosa, cada vez mais puxando para trás até que a função é feito.
O código a seguir mostra um programa completo usando a amostra recursão() função.
#include vazio recursão (int x) -int main () {recursão (10) -Retornar (0) -} recursão void (int x) {if (x == 0) voltar-else {puts ("Boop!") -recursion (- x) -}}
Uma manifestação comum de recursão é uma função fatorial. o fatorial é o resultado da multiplicação um valor por cada um dos seus números inteiros positivos. Por exemplo:
Video: Menor elemento do array com recursão em Java - Canal do Código
4! = 4 × 3 × 2 × 1
O resultado desta factorial é 24. O computador também pode fazer este cálculo, por qualquer implementação de um circuito ou a criação de uma função recursiva. Aqui está uma tal função:
int factorial (int x) {if (x == 1) return (x) -elsereturn (x * fatorial (x-1)) -}
Tal como acontece com as outras funções recursivas, o fatorial() função contém uma condição de saída: x == 1. Caso contrário, a função é chamada novamente com um a menos que o valor atual de X. Mas toda a acção tem lugar com os valores de retorno.