Questão de Algoritmos

Neste exemplo da figura 44, é possível observar que a escrita de uma função recursiva em sua sintaxe é semelhante a qualquer outra função, mas existe um detalhe que indica a existência de uma possível recursão logo num primeiro olhar, quando se percebe que a função, em determinado momento, chama a si mesma. Analisando com mais detalhes, a funcionalidade da sub-rotina se baseia em calcular, a partir de dois valores recebidos como parâmetros, a operação exponencial matemática, e o resultado seja devolvido ao ponto do algoritmo que chama esta sub-rotina. Para que o cálculo possa ser realizado, existe uma estrutura de repetição encarregada de finalizar a função ou chamá-la novamente para que uma nova iteração ocorra desta sub-rotina, e a recursão seja realizada. A lógica da recursão neste exemplo se baseia na forma como o cálculo é realizado para que se possa pensar em como realizar as sucessivas operações até que uma condição indique que não são mais necessárias chamadas da função, e o processo de repetição termine, mas não ocorre apenas o término das iterações, mas todos os retornos das novas chamadas da função. Ao receber os dados por meio dos parâmetros, é realizada uma verificação em uma estrutura condicional para retornar o valor 1 como resposta no caso de o expoente ser igual a 0, operação definida como padrão pela matemática o resultado 1 para qualquer número elevado a zero. Caso não seja 1 o valor do expoente, a função chama a si mesma novamente solicitando a multiplicação do valor a base pelo retorno da função, repetindo o mesmo valor para a base, mas reduzindo uma unidade no expoente para que a cada iteração, cada nova chamada da função, o processo se repita. Com isto, se fossem passados os valores 5 para base, e 3 para expoente, a execução da função ocorreria de forma que 3 seria comparado a 0, e sendo diferentes, a condição alternativa para falso inicia a multiplicação do valor da base pelo resultado da chamada da própria função pela recursividade. Numa segunda iteração da função, o expoente valeria 2, sendo diferente de zero ainda, e engatilhando nova multiplicação da base na expressão já iniciada na iteração anterior, e passando para a nova ocorrência da chamada da função com base igual, e expoente menos 1. Na próxima iteração (terceira), tem-se agora o expoente 1, que ainda permanece diferente de zero, e por isto, nova multiplicação é organizada, tendo agora três operações 5 * encadeadas. Novamente a função é chamada com a mesma base, mas agora, com mais uma redução do expoente, seu valor segue como 0 para a nova iteração, e nela, como o expoente tem seu valor igual ao da comparação, realmente ocorre o retorno de um valor 1 para ser utilizado na expressão, e ao fim de uma quarta iteração, a expressão se encontra semelhante a 5 * 5 * 5 * 1. Realizando o cálculo normalmente, obtém-se um resultados 125 pelas três multiplicações com 5 e uma inicial pelo valor 1, e assim, com os sucessivos retornos, este resultado é obtido e a função encerra seu processamento. Esse exemplo traz uma demonstração de como se pode aplicar recursividade em algoritmos, mas este mesmo exemplo pode ser escrito em forma de algoritmo imperativo sem a modularização em forma de função ou sem o uso da recursividade. Observe o exemplo da imagem 59.

A
FUNÇÃO POTENCIA (INTEIRO BASE, INTEIRO EXPOENTE) DE INTEIRO
B
FUNÇÃO TABUADA (INTEIRO VALOR1, INTEIRO VALOR2) DE INTEIRO
C
FUNÇÃO FATORIAL (INTEIRO N) DE INTEIRO

Ainda não há comentários para esta questão.

Seja o primeiro a comentar!

Aulas em vídeo Em breve

00:00

Tópicos Relacionados