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

Autor: Laura McKinney
Data De Criação: 1 Abril 2021
Data De Atualização: 4 Poderia 2024
Anonim
Diferença entre recursão e iteração - Tecnologia
Diferença entre recursão e iteração - Tecnologia

Contente


A recursão e a iteração executam repetidamente o conjunto de instruções. Recursão é quando uma instrução em uma função se chama repetidamente. A iteração ocorre quando um loop é executado repetidamente até que a condição de controle se torne falsa. A principal diferença entre recursão e iteração é que é um recursão é um processo, sempre aplicado a uma função. o iteração é aplicado ao conjunto de instruções que queremos que sejam executadas repetidamente.

  1. Gráfico de comparação
  2. Definição
  3. Principais diferenças
  4. Conclusão

Gráfico de comparação

Base para comparaçãoRecursãoIteração
BasicA declaração em um corpo de função chama a própria função.Permite que o conjunto de instruções seja executado repetidamente.
FormatoNa função recursiva, apenas a condição de finalização (caso base) é especificada.A iteração inclui inicialização, condição, execução da instrução dentro do loop e atualização (incrementos e decrementos) da variável de controle.
TerminaçãoUma instrução condicional é incluída no corpo da função para forçar o retorno da função sem que a chamada de recursão seja executada.A instrução de iteração é executada repetidamente até que uma determinada condição seja atingida.
CondiçãoSe a função não convergir para alguma condição chamada (caso base), isso leva a uma recursão infinita.Se a condição de controle na instrução da iteração nunca se tornar falsa, isso levará à iteração infinita.
Repetição infinitaA recursão infinita pode travar o sistema.O loop infinito usa ciclos da CPU repetidamente.
AplicadoA recursão é sempre aplicada às funções.A iteração é aplicada a instruções de iteração ou "loops".
PilhaA pilha é usada para armazenar o conjunto de novas variáveis ​​e parâmetros locais toda vez que a função é chamada.Não usa pilha.
A sobrecargaA recursão possui a sobrecarga de chamadas de função repetidas.Nenhuma sobrecarga de chamada de função repetida.
RapidezLento na execução.Rápido na execução.
Tamanho do CódigoA recursão reduz o tamanho do código.A iteração torna o código mais longo.


Definição de Recursão

C ++ permite que uma função se chame dentro de seu código. Isso significa que a definição da função possui uma chamada de função para si mesma. Às vezes, também é chamado de "definição circular". O conjunto de variáveis ​​e parâmetros locais usados ​​pela função é criado novamente cada vez que a função se chama e é armazenada na parte superior da pilha. Mas, sempre que uma função se chama, ela não cria uma nova cópia dessa função. A função recursiva não reduz significativamente o tamanho do código e nem melhora a utilização da memória, mas faz alguns quando comparados à iteração.

Para encerrar a recursão, você deve incluir uma instrução select na definição da função para forçar o retorno da função sem fazer uma chamada recursiva para si mesma. A ausência da instrução select na definição de uma função recursiva permitirá que a função entre em recursividade infinita uma vez chamada.


Vamos entender a recursão com uma função que retornará o fatorial do número.

int fatorial (int num) {int resposta; if (num == 1) {retorna 1; } else {resposta = fatorial (num-1) * num; // chamada recursiva} return (answer); }

No código acima, a instrução na outra parte mostra a recursão, como a instrução chama a função fatorial () na qual reside.

Definição de Iteração

A iteração é um processo de execução repetida do conjunto de instruções até que a condição na instrução de iteração se torne falsa. A instrução de iteração inclui a inicialização, comparação, execução das instruções dentro da instrução de iteração e, finalmente, a atualização da variável de controle. Depois que a variável de controle é atualizada, ela é comparada novamente e o processo se repete até que a condição na instrução de iteração se torne falsa. As instruções de iteração são loop "for", loop "while", loop "do-while".

A instrução de iteração não usa uma pilha para armazenar as variáveis. Portanto, a execução da instrução de iteração é mais rápida quando comparada à função recursiva. Mesmo a função de iteração não possui a sobrecarga de chamadas de função repetidas, o que também torna sua execução mais rápida que a função recursiva. A iteração é finalizada quando a condição de controle se torna falsa. A ausência de condição de controle na instrução de iteração pode resultar em um loop infinito ou causar um erro de compilação.

Vamos entender a iteração em relação ao exemplo acima.

int fatorial (int num) {int resposta = 1; // precisa de inicialização porque pode conter um valor de lixo antes de sua inicialização para (int t = 1; t> num; t ++) // iteração {answer = answer * (t); retorno (resposta); }}

No código acima, a função retorna o fatorial do número usando a instrução de iteração.

  1. Recursão é quando um método em um programa se chama repetidamente, enquanto iteração ocorre quando um conjunto de instruções em um programa é executado repetidamente.
  2. Um método recursivo contém conjunto de instruções, chamada de instrução e uma condição de terminação, enquanto as instruções de iteração contêm inicialização, incremento, condição, conjunto de instruções em um loop e uma variável de controle.
  3. Uma declaração condicional decide o término da recursão e o valor da variável de controle decide o término da declaração de iteração.
  4. Se o método não levar à condição de finalização, ele entrará em recursão infinita. Por outro lado, se a variável de controle nunca levar ao valor de finalização, a instrução de iteração itera infinitamente.
  5. A recursão infinita pode levar à falha do sistema, enquanto a iteração infinita consome ciclos da CPU.
  6. A recursão é sempre aplicada ao método, enquanto a iteração é aplicada ao conjunto de instruções.
  7. As variáveis ​​criadas durante a recursão são armazenadas na pilha, enquanto a iteração não requer uma pilha.
  8. A recursão causa a sobrecarga da chamada de função repetida, enquanto a iteração não tem uma sobrecarga de chamada de função.
  9. Devido à chamada de função, a execução indireta da recursão é mais lenta, enquanto a execução da iteração é mais rápida.
  10. A recursão reduz o tamanho do código, enquanto as iterações tornam o código mais longo.

Conclusão:

A função recursiva é fácil de escrever, mas eles não apresentam um bom desempenho em comparação com a iteração, enquanto que a iteração é difícil de escrever, mas seu desempenho é bom em comparação com a recursão.