diff --git a/recursividade.tex b/recursividade.tex index 282741287458a5fdc0b71d30d6adc647c83cce19..db608813fc0f4e60fb3eba10a0ba6c44d2ca43fa 100644 --- a/recursividade.tex +++ b/recursividade.tex @@ -17,7 +17,6 @@ $$n^0 = 1$$ $$n^k = n.n^{k-1}$$ - Observe que, no exemplo acima, a exponenciação $n^k$ está sendo definida através de uma outra exponenciação $(n^{k-1})$, ou seja, este é um caso em que a exponenciação é definida através dela mesma (o que é uma definição recursiva ou também chamada de recorrência). @@ -26,7 +25,7 @@ Analisando um pouco melhor o exemplo acima, $n^{k-1}$ também é uma exponencia portanto poderia utilizar a mesma definição para se definir, ou seja, se tomamos $n^{k-1} = n.n^{k-2}$ e assim podemos definir, $n^{k-3}$, etc. -Note que deveria haver um momento em que a definição termina, pois senão seria +Note que deve haver um momento em que a definição termina, pois senão seria impossível calcular $n^k$. Por isso, toda definição recursiva deve ser acompanhada de um caso trivial que será o final da definição. No exemplo apresentado, $n^0 = 1$ é o caso trivial e determina o final da recursividade sobre $n^k$. @@ -46,7 +45,6 @@ já que podem ser definidas através delas mesmas. Para uma linguagem permitir recursividade, uma função deve estar apta a chamar a si própria. Um exemplo clássico de recursividade em programação é a função que calcula o fatorial de um número. - Exemplo 1: Duas versões de fatorial \begin{lstlisting} // não recursiva @@ -96,11 +94,11 @@ são novas. Quando cada chamada recursiva retorna, as antigas variáveis locais e os parâmetros são removidos da pilha e a execução recomeça no ponto de chamada da função dentro da função. -A principal vantagem das funções recursivas é que elas podem ser usadas para criar versões mais claras -e mais simples de muitos algoritmos complexos do que os seus equivalentes iterativos. +A principal vantagem das funções recursivas é que elas podem ser usadas para criar versões mais simples +e de mais fácil compreensão de muitos algoritmos complexos do que os seus equivalentes iterativos. Por exemplo, o algoritmo de ordenação rápida é bastante difícil de ser implementado pelo modo -iterativo. Também, alguns problemas, especialmente os relacionados com IA (inteligência artificial), +iterativo. Além deste, diversos problemas, especialmente os relacionados com IA (inteligência artificial), levam a si próprios a soluções recursivas. Finalmente, muitas definições são naturalmente recursivas, o que torna muito mais fácil implementá-las utilizando recursividade.