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.

menu