A Taste of recursão
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. Não aqui!
recursão é basicamente o processo de uma função de chamada em si. Por exemplo:
vazio funct (int x) {funct (x) -}
Neste pedaço de código, você vê um terrível exemplo de uma função recursiva, mas serve para fins ilustrativos aqui: O Esta função () função chama-se. 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, deixa de funcionar. 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, ou o valor passado 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") - recursão (- 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 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 de um valor por cada um dos seus números inteiros positivos. Por exemplo:
4! = 4 x 3 x 2 x 1
O resultado desta fatorial é 24. O computador pode também fazer este cálculo, quer por aplicação de um loop ou criando 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 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 de novo com um a menos do que o valor da corrente de x. Mas toda a acção tem lugar com os valores de retorno.