Perguntas com a marcação «tail-recursion»

A recursão de cauda é uma estratégia recursiva na qual uma função realiza algum trabalho e, em seguida, invoca a si mesma. A "cauda" refere-se ao fato de que a recursão está no final da função. Muitos compiladores de linguagens de programação - especialmente funcionais - podem transformar esses tipos de chamadas em iterações, o que significa que a recursão final em linguagens suportadas pode ser usada sem medo de estouro de pilha, independentemente do número de chamadas.



19
Como faço para sair de um loop no Scala?
Como faço para quebrar um loop? var largest=0 for(i<-999 to 1 by -1) { for (j<-i to 1 by -1) { val product=i*j if (largest>product) // I want to break out here else if(product.toString.equals(product.toString.reverse)) largest=largest max product } } Como transformar aninhados para loops em recursão de cauda? Do Scala …

20
Noções básicas sobre recursão [fechado]
Atualmente, essa questão não se encaixa no nosso formato de perguntas e respostas. Esperamos que as respostas sejam apoiadas por fatos, referências ou conhecimentos, mas essa pergunta provavelmente solicitará debates, argumentos, pesquisas ou discussões prolongadas. Se você acha que essa pergunta pode ser melhorada e possivelmente reaberta, visite o centro …

6
O Python otimiza a recursão da cauda?
Eu tenho o seguinte pedaço de código que falha com o seguinte erro: RuntimeError: profundidade máxima de recursão excedida Tentei reescrever isso para permitir a otimização da recursão de cauda (TCO). Acredito que esse código teria sido bem-sucedido se um TCO tivesse ocorrido. def trisum(n, csum): if n == 0: …




5
A JVM impede otimizações de chamada final?
Eu vi esta citação sobre a pergunta: Qual é uma boa linguagem funcional para construir um serviço da web? Scala, em particular, não oferece suporte à eliminação de chamadas finais, exceto em funções autorrecursivas, o que limita os tipos de composição que você pode fazer (esta é uma limitação fundamental …





2
Quando é garantida a recursão da cauda no Rust?
Linguagem C Na linguagem de programação C, é fácil ter recursão de cauda : int foo(...) { return foo(...); } Apenas retorne como é o valor de retorno da chamada recursiva. É especialmente importante quando essa recursão pode se repetir mil ou até um milhão de vezes. Usaria muita memória …
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.