algoritmos recursivos são aqueles algoritmos que podem chamar a si mesmos como parte de sua solução. Estas funções , muitas vezes trabalhar em problemas que contêm uma série de sub-problemas idênticos , como passagem de árvore ou cálculo fatorial. Repetidamente chamar a mesma função repetidamente pode fazer o trabalho lento, embora possa tornar a codificação mais simples. Para aumentar a velocidade de execução, você pode recriar algoritmos recursivos , como o algoritmo de fatorial , em um algoritmo iterativo um pouco mais complicado usando loops que serão executadas muito mais rápido. Instruções
1
Analisar o algoritmo recursivo . Neste exemplo , você vai usar a solução recursiva para o problema fatorial :
int fatorial (int fato ) {
if ( fato == 0 ) {return 1 ;} else { return fato * fatorial ( fato - 1) ;}}
2
Decida se os argumentos da função pode ser realizada em variáveis. No exemplo fatorial , os resultados do fatorial pode ser armazenado em uma variável " total_factorial " para a duração de qualquer iteração . Este exemplo mostra o algoritmo de fatorial recursiva ea variável a ser usado para o argumento recursiva :
int total_factorial = 0:
3
Determinar uma estrutura de loop. Em C + + , por exemplo , o " , enquanto " ciclo funciona bem com iterações que têm um comprimento indeterminados . " Por " laços , por outro lado , funciona bem quando uma laçada vai para uma duração restrita, representada por um número inteiro de algum tipo . Para o exemplo fatorial , um laço "for" vai funcionar bem :
int fatorial = 5; int total_factorial = 0;
4
Determinar condições vacilantes . Normalmente, como no exemplo fatorial , a recursão terminará quando uma condição for satisfeita. Em um loop interativa , como o loop for, é bom saber antes da mão. Como você sabe que para encontrar o fatorial de um número " n" que você vai interagir n- 1 vezes (excluindo o zero ), você pode começar em um e correr até que o número fatorial :
for (int i = 1; i < = fatorial ; i + +) {if ( i == 1) { total_factorial = 1; } else { fatorial total de * = i; }}