Vídeo: My Ordinary Life-The Living Tombstone 2024
Recursão é uma palavra grande e assustadora que você ouça 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 um incansável quando se trata de entender como a recursão funciona. A maioria das pessoas apenas aceita e continua. Aqui não!
Recursão é basicamente o processo de uma função que se chama. Por exemplo:
void 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: The funct () a função se chama. Isso é uma recursão. Agora, o que acontece neste exemplo é basicamente um ciclo infinito e, graças a um algo-ou-outro técnico chamado stack pointe r , , o computador eventualmente falha. Mas é apenas uma ilustração.
Para que a recursão funcione, a função deve ter uma condição de resgate, assim como um loop. Portanto, o valor passado para a função recursiva ou seu valor de retorno deve ser testado. Aqui está um exemplo melhor de uma função recursiva:
recusão vazia (int x) {if (x == 0) retornar; else {puts ("Boop!"); recursão (- x);}}
A função recursão () aceita o valor x . Se x for igual a zero, a função é obtida. Caso contrário, a função é chamada novamente, mas o valor x é reduzido. O operador de prefixo de decremento é usado para que o valor de x seja reduzido antes de a chamada for feita.
A função de recursão de exemplo () basicamente escuta o texto Boop! um dado número de vezes. Então, se recursão () é chamado com o valor 10, você vê esse texto exibido dez vezes.
A parte insana sobre a recursão é que a função continua a se chamar, se embalando cada vez mais, como se estivesse em uma espiral. No exemplo anterior, a condição x == 1 finalmente desenrola essa bagunça tortuosa, cada vez mais puxando para trás até que a função seja feita.
O código a seguir mostra um programa completo usando a função recursão de exemplo ().
#incluir recursão vazia (int x); int main () {recursão (10); return (0);} void recursion (int x) {if (x == 0) retornar; else {puts ("Boop!"); recursão (- x);}}
Uma demonstração comum de recursão é uma função fatorial. O fatorial é o resultado da multiplicação de um valor por cada um dos seus inteiros positivos. Por exemplo:
4! = 4 × 3 × 2 × 1
O resultado deste fatorial é 24. O computador também pode fazer esse cálculo, implementando um loop ou criando uma função recursiva.Aqui está essa função:
int fatorial (int x) {if (x == 1) return (x); else return (x * factorial (x-1));}
Tal como acontece com as outras funções recursivas, a função factorial () contém uma condição de saída: x == 1. Caso contrário, a função é chamada novamente com um valor menor que o atual x . Mas toda a ação ocorre com os valores de retorno.