Key Difference – Recursão vs Iteração
Recursão e Iteração podem ser usadas para resolver problemas de programação. A abordagem para resolver o problema usando recursão ou iteração depende da maneira de resolver o problema. A principal diferença entre recursão e iteração é que a recursão é um mecanismo para chamar uma função dentro da mesma função, enquanto a iteração é executar um conjunto de instruções repetidamente até que a condição dada seja verdadeira. Recursão e Iteração são as principais técnicas para desenvolver algoritmos e construir aplicativos de software.
O que é Recursão?
Quando uma função chama a si mesma dentro da função, ela é conhecida como Recursão. Existem dois tipos de recursão. Eles são recursão finita e recursão infinita. A recursão finita tem uma condição final. A recursão infinita não tem condição de término.
Recursão pode ser explicada usando o programa para calcular fatoriais.
n!=n(n-1)!, se n>0
n!=1, se n=0;
Consulte o código abaixo para calcular fatorial de 3(3!=321).
intmain() {
int valor=fatorial (3);
printf(“Fatorial é %d\n”, valor);
return 0;
}
intfactorial (intn) {
if(n==0) {
return 1;
}
else {
return n fatorial(n-1);
}
}
Ao chamar fatorial (3), essa função chamará fatorial (2). Ao chamar fatorial (2), essa função chamará fatorial (1). Então fatorial (1) chamará fatorial (0). fatorial (0) retornará 1. No programa acima, a condição n==0 no “bloco if” é a condição base. De acordo com o Da mesma forma, a função fatorial é chamada repetidamente.
Funções recursivas estão relacionadas com a pilha. Em C, o programa principal pode ter muitas funções. Assim, main() é a função de chamada, e a função que é chamada pelo programa principal é a função chamada. Quando a função é chamada, o controle é dado à função chamada. Após a execução da função ser concluída, o controle é retornado ao main. Em seguida, o programa principal continua. Então, ele cria um registro de ativação ou um quadro de pilha para continuar a execução.
Figura 01: Recursão
No programa acima, ao chamar fatorial (3) do main, ele cria um registro de ativação na pilha de chamadas. Em seguida, o quadro de pilha fatorial (2) é criado no topo da pilha e assim por diante. O registro de ativação mantém informações sobre variáveis locais etc. Cada vez que a função é chamada, um novo conjunto de variáveis locais é criado no topo da pilha. Esses quadros de pilha podem diminuir a velocidade. Da mesma forma na recursão, uma função chama a si mesma. A complexidade de tempo para uma função recursiva é encontrada pelo número de vezes que a função é chamada. A complexidade de tempo para uma chamada de função é O(1). Para um número n de chamadas recursivas, a complexidade de tempo é O(n).
O que é Iteração?
Iteração é um bloco de instruções que se repete repetidamente até que a condição dada seja verdadeira. A iteração pode ser obtida usando “for loop”, “do-while loop” ou “while loop”. A sintaxe “for loop” é a seguinte.
for (inicialização; condição; modificar) {
// declarações;
}
Figura 02: “para diagrama de fluxo de loop”
A etapa de inicialização é executada primeiro. Esta etapa é declarar e inicializar as variáveis de controle de loop. Se a condição for verdadeira, as instruções dentro das chaves serão executadas. Essas instruções são executadas até que a condição seja verdadeira. Se a condição for falsa, o controle vai para a próxima instrução após o “loop for”. Após executar as instruções dentro do loop, o controle passa a modificar a seção. É para atualizar a variável de controle do loop. Em seguida, a condição é verificada novamente. Se a condição for verdadeira, as instruções dentro das chaves serão executadas. Desta forma, o “for loop” itera.
No “while loop”, as instruções dentro do loop são executadas até que a condição seja verdadeira.
while (condição){
//declarações
}
No loop “do-while”, a condição é verificada no final do loop. Assim, o loop é executado pelo menos uma vez.
fazer{
//declarações
} while(condição)
Programe para encontrar o fatorial de 3 (3!) usando iteração (“for loop”) é o seguinte.
int main(){
intn=3, fatorial=1;
inti;
for(i=1; i<=n; i++){
fatorial=fatoriali;
}
printf(“Fatorial é %d\n”, fatorial);
return 0;
}
Quais são as semelhanças entre recursão e iteração?
- Ambas são técnicas para resolver um problema.
- A tarefa pode ser resolvida em recursão ou iteração.
Qual é a diferença entre recursão e iteração?
Recursão vs Iteração |
|
Recursão é um método de chamar uma função dentro da mesma função. | Iteração é um bloco de instruções que se repete até que a condição dada seja verdadeira. |
Complexidade Espacial | |
A complexidade do espaço de programas recursivos é maior que iterações. | A complexidade do espaço é menor nas iterações. |
Velocidade | |
A execução da recursão é lenta. | Normalmente, a iteração é mais rápida que a recursão. |
Condição | |
Se não houver condição de término, pode haver uma recursão infinita. | Se a condição nunca se tornar falsa, será uma iteração infinita. |
Pilha | |
Na recursão, a pilha é usada para armazenar variáveis locais quando a função é chamada. | Em uma iteração, a pilha não é usada. |
Legibilidade do código | |
Um programa recursivo é mais legível. | O programa iterativo é mais difícil de ler do que um programa recursivo. |
Resumo – Recursão vs. Iteração
Este artigo discutiu a diferença entre recursão e iteração. Ambos podem ser usados para resolver problemas de programação. A diferença entre recursão e iteração é que a recursão é um mecanismo para chamar uma função dentro da mesma função e iteração para executar um conjunto de instruções repetidamente até que a condição dada seja verdadeira. Se um problema pode ser resolvido de forma recursiva, ele também pode ser resolvido usando iterações.
Baixe a versão em PDF de Recursão vs. Iteração
Você pode baixar a versão em PDF deste artigo e usá-lo para fins offline conforme nota de citação. Faça o download da versão em PDF aqui Diferença entre recursão e iteração