Diferenças entre recursão e iteração

Recursão e iteração aceleram a execução de um programa.

Recursão

Uma operação recursiva é um processo que é repetido até que uma instrução final seja alcançada de dentro da operação. A técnica recursiva mais comum na programação de computadores é um método de reduzir um problema, de cima para baixo, simplificando a versão do problema até que um caso básico seja atingido. A solução para o caso base é combinada com a solução de cada um dos problemas anteriores até chegar ao primeiro, no caso mais complicado.

Iteração

Na programação de computadores, uma operação iterativa é aquela que repete um processo durante um determinado número de vezes (iterações), dependendo dos parâmetros definidos pelo programador. Normalmente, a saída de uma iteração do processo é usada como ponto de partida para a próxima iteração. Cada passo origina o próximo passo. O processo continua até que uma determinada meta seja atingida e o processo termine.

Principal diferença

A diferença mais importante entre operações recursivas e iterativas é que as etapas de uma operação iterativa são executadas uma de cada vez e direcionam a execução diretamente para a próxima etapa. Em uma operação recursiva, cada etapa após a etapa inicial é uma réplica da etapa anterior. Além disso, de cima para baixo, cada passo é um pouco mais fácil do que aquele que está apenas "no topo". No final da operação, todas as soluções são combinadas para resolver o problema.

Exemplos

Um exemplo usual de uma operação cursiva é um fatorial. O factoral de um número é o produto de inteiros positivos menores ou iguais a esse número. Resolver este problema recursivamente requer multiplicar o número inicial por si mesmo menos 1. A expressão recursiva é n (n - 1), onde n é o número inicial. Cada passo é um pouco mais fácil que o passo anterior. A operação termina quando n é reduzido para 1. Um exemplo de uma iteração é encontrar a soma de um conjunto de números. A expressão iterativa é (n + (n + 1)), onde n é o número inicial. Cada etapa começa com a solução da etapa anterior. A operação termina quando n atinge o número desejado.