Articles of recursion

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?

Torre de Hanói: Algoritmo Recursivo

Embora eu não tenha problema algum em compreender a recursion, parece que não consigo enredar minha cabeça na solução recursiva do problema da Torre de Hanói. Aqui está o código da Wikipedia : procedure Hanoi(n: integer; source, dest, by: char); Begin if (n=1) then writeln(‘Move the plate from ‘, source, ‘ to ‘, dest) else […]

Determinando a complexidade para funções recursivas (notação Big O)

Eu tenho um Computer Science Midterm amanhã e preciso de ajuda para determinar a complexidade dessas funções recursivas. Eu sei como resolver casos simples, mas ainda estou tentando aprender a resolver esses casos mais difíceis. Estes foram apenas alguns dos exemplos de problemas que eu não consegui descobrir. Qualquer ajuda seria muito apreciada e ajudaria […]

Como encontrar o nome do campo do MongoDB em profundidade arbitrária

Eu importei alguns dados XML sloppy para um database Mongo. Cada documento tem nesteds sub-documentos para uma profundidade de cerca de 5-10. Eu gostaria de encontrar () documentos que têm um valor particular de um campo particular, onde o campo pode aparecer em qualquer profundidade nos sub-documentos (e pode aparecer várias vezes). No momento, estou […]

Reflexão e refração impossíveis sem traçado recursivo de raios?

Estou escrevendo um renderizador de raytracing em tempo real baseado em GPU usando um shader de computação GLSL. Até agora, funciona muito bem, mas me deparei com um problema aparentemente insolúvel quando se trata de ter reflexões e refrações simultaneamente. Minha lógica me diz que, para ter reflexões e refrações em um object, como o […]

Poder por quadratura para expoentes negativos

Não tenho certeza se o poder por quadratura cuida do expoente negativo. Eu implementei o código a seguir, que funciona apenas para números positivos. #include int powe(int x, int exp) { if (x == 0) return 1; if (x == 1) return x; if (x&1) return powe(x*x, exp/2); else return x*powe(x*x, (exp-1)/2); } Olhando para […]