Casa > Q > Quais São Os Casos De Uso De Recursividade?

Quais são os casos de uso de recursividade?

Recursion é uma ferramenta de programação maravilhosa. Ela fornece uma maneira simples e poderosa de abordar uma variedade de problemas. É muitas vezes difícil, no entanto, ver como um problema pode ser abordado recursivamente; pode ser difícil "pensar" recursivamente. Também é fácil escrever um programa recursivo que ou leva muito tempo para ser executado ou não' não termina de forma adequada. Neste artigo nós'vamos rever o básico da recursividade e esperamos ajudá-lo a desenvolver, ou refinar, uma habilidade de programação muito importante.


O que é a recursividade?

Para dizer exactamente o que é a recursividade, primeiro temos de responder "O que é a recursividade? Basicamente, diz-se que uma função é recursiva se ela se autodenomina. Below is pseudocode for a recursive function that prints the phrase "Hello World" a total ofcount times:

  1. function HelloWorld(count) {  
  2. if(count<1) 
  3. return print("Hello World!"); 
  4. HelloWorld(count - 1); 

Pode não ficar imediatamente claro o que nós're fazemos aqui - então deixe's seguir o que acontece se chamarmos a nossa função com a contagem configurada para 10. Como a contagem não é inferior a 1, nós não fazemos nada na primeira linha. Na próxima, imprimimos "Olá Mundo!" uma vez. Neste ponto, precisamos imprimir a nossa frase mais 9 vezes. Como agora temos uma função HelloWorld que pode fazer exatamente isso, nós simplesmente chamamos HelloWorld (desta vez com a contagem configurada para 9) para imprimir as cópias restantes. Essa cópia do HelloWorld imprimirá a frase uma vez, e então chamamos outra cópia do HelloWorld para imprimir as 8 cópias restantes. Isto continuará até finalmente ligarmos para o HelloWorld com a contagem configurada para zero. O HelloWorld(0) não faz nada; ele apenas retorna. Assim que o HelloWorld(0) terminar, o HelloWorld(1) também está pronto, e retorna. Isto continua até a nossa chamada original de HelloWorld(10), que termina de executar tendo impresso um total de 10 "Hello World!"s.


Você pode estar pensando que isto não é muito excitante, mas esta função demonstra algumas considerações chave no desenho de um algoritmo recursivo:

  1. Manipula um simples "caso base" sem usar recursividade.
    Neste exemplo, o caso base é "HelloWorld(0)"; se a função é pedida para imprimir zero vezes então ela retorna sem desovar mais "HelloWorld "s.
  2. Evite ciclos.
    Imagine se "HelloWorld(10)" chamado "HelloWorld(10)" que se chama "HelloWorld(10)". You'd terminaria com um ciclo infinito de chamadas, e isto normalmente resultaria em um erro de "stack overflow" enquanto em execução. Em muitos programas recursivos, você pode evitar ciclos fazendo com que cada chamada de função seja para um problema que é de alguma forma menor ou mais simples que o problema original. Neste caso, por exemplo, a contagem será cada vez menor com cada chamada. À medida que o problema fica cada vez mais simples (neste caso, nós'vamos considerar "mais simples" imprimir algo zero vezes ao invés de imprimir 5 vezes) eventualmente ele chegará ao "caso base" e parará de se repetir. Existem muitas maneiras de evitar ciclos infinitos, mas certificar-se de que nós're lidar com problemas progressivamente menores ou mais simples é uma boa regra de ouro.>li> Cada chamada da função representa uma manipulação completa da tarefa dada.
    Às vezes a recursividade pode parecer meio mágica na forma como ela quebra grandes problemas. No entanto, não existe tal coisa como um almoço gratuito. Quando a nossa função recebe um argumento de 10, nós imprimimos "Hello World!" uma vez e depois imprimimos mais 9 vezes. We can pass a part of the job along to a recursive call, but the original function still has to account for all 10 copies somehow.

Check out use case scenarios at http://www.daqwest.com/quests/26....

1) Hierarchies, Networks, or Graphs

2) Multiple Related Decisions

3) Explicit Recursive Relationships

Good luck !!!

De Cutcliffe Pettway

Preciso de um HDR TV para os meus Blu-rays 4K? :: Onde posso encontrar um monte de slots de casino online?