Articles of recursion

Todos os algoritmos iterativos podem ser expressos recursivamente?

Se não, existe um bom contra-exemplo que mostre um algoritmo iterativo para o qual não existe uma contrapartida recursiva? Se for o caso de todos os algoritmos iterativos poderem ser expressos recursivamente, há casos em que isso é mais difícil de ser feito? Além disso, que papel desempenha a linguagem de programação em tudo isso? […]

Como recursivamente listar diretórios em C no Linux?

Eu preciso listar recursivamente todos os diretórios e arquivos na programação C. Eu olhei para o FTW, mas isso não está incluído nos dois sistemas operacionais que eu estou usando (Fedora e Minix). Estou começando a ter uma grande dor de cabeça de todas as coisas diferentes que li nas últimas horas. Se alguém souber […]

Chamando uma function javascript recursivamente

Eu posso criar uma function recursiva em uma variável assim: /* Count down to 0 recursively. */ var functionHolder = function (counter) { output(counter); if (counter > 0) { functionHolder(counter-1); } } Com isso, functionHolder(3); iria produzir 3 2 1 0 . Vamos dizer que fiz o seguinte: var copyFunction = functionHolder; copyFunction(3); produziria 3 […]

Sequência recursiva de Fibonacci em Java

Por favor, explique este código simples: public int fibonacci(int n) { if(n == 0) return 0; else if(n == 1) return 1; else return fibonacci(n – 1) + fibonacci(n – 2); } Estou confuso com a última linha, especialmente porque se n = 5 por exemplo, então fibonacci (4) + fibonacci (3) seria chamado e […]

Função recursiva causando um estouro de pilha

Eu estou tentando escrever uma function de peneira simples para calcular números primos em clojure. Eu já vi essa pergunta sobre como escrever uma function de peneira eficiente, mas ainda não estou nesse ponto. Neste momento, estou apenas tentando escrever uma peneira muito simples (e lenta). Aqui está o que eu inventei: (defn sieve [potentials […]

Padrões de design para converter algoritmos recursivos em iterativos

Existe alguma heurística geral, dicas, truques ou paradigmas comuns de design que podem ser empregados para converter um algoritmo recursivo em um iterativo? Eu sei que isso pode ser feito, eu estou querendo saber se há práticas que valem a pena ter em mente ao fazer isso.

O que exatamente é uma function reentrante?

Na maioria das vezes , a definição de reinput é citada na Wikipedia : Um programa ou rotina de computador é descrito como reentrante, se puder ser chamado com segurança novamente antes que sua invocação anterior tenha sido concluída (isto é, possa ser executada com segurança simultaneamente). Para ser reentrante, um programa de computador ou […]

É Cmake definir variável recursiva?

Eu estou tentando modificar sinalizadores de compilador para todos os diretórios abaixo de um determinado diretório (ou seja, para todos os subdiretórios de diretórios atuais e todos os seus subdiretórios recursivamente). Então eu encontrei aqui há duas maneiras: add_directory(dir1) # … add_directory(dirN) add_compile_options(flag1 flag2 …) # or for CMake versions < 3.0 to do something […]

“Aplicação: não um procedimento” em procedimentos aritméticos binários

Eu tenho uma definição de raquete simples para multiplicar números binários juntos. Ele usa uma definição “addWithCarry” bem testada que usa três parâmetros: duas listas e um dígito de transporte e retorna a sum binária. Os números binários são representados como listas na ordem inversa. Passei pela linha de teste com o depurador e ele […]

É legal reciclar em main () em C ++?

Eu li que o padrão C ++ proíbe recursion em main() , mas g + + compila o seguinte código sem reclamação: int main() { main(); } Alguém pode esclarecer isso?