| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 17:22:08
|
felipe_fernandes
Thread.start()
Membro desde: 07/09/2010 22:42:41
Mensagens: 33
Offline
|
Tenho dois métodos que calculam o fatorial de um número. Ambos retornam o mesmo resultado. Mas qual será o mais claro de se entender? O com recursividade ou sem recursividade? Eu achei mais claro o sem recursividade.
public static int fatorial1(int valor){ // Sem recursividade
int num = 1;
for ( ; valor>0; valor--){
num *=valor;
}
return num;
}
public static int fatorial(int valor){ // com recursividade
if (valor==1 || valor==0){
return 1;
} else {
int num = valor;
num *=fatorial(valor-1);
return num;
}
}
This message was edited 1 time. Last update was at 07/02/2012 17:23:26
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 17:30:40
|
Guguuu
JavaGuru
Membro desde: 09/01/2007 15:03:09
Mensagens: 203
Offline
|
pra que complicar se vc pode simplificar...
se pra vc esta melhor sem e funciona... pra que bater cabeça?
utilize comentarios durante o codigo.. isso sim ajuda a entender melhor. Por que hoje vc olha e sabe o q é... daki 1 ano, caso vc precise denovo, vai ser bem mais dificil entender...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 17:33:04
|
eduardojandre
What is classpath?
Membro desde: 15/01/2008 16:32:47
Mensagens: 9
Offline
|
Isso é muito subjetivo, varia de pessoa para pessoa, no começo é difícil entender a recursividade e os métodos iterativos podem parecer mais simples, mas com um pouco de prática a recursividade passa a "fluir" melhor... Só que quase sempre (esse caso incluso) o método iterativo tem um desempenho muito superior, as vezes pelas simplicidade do código vale pena usar a recursividade mesmo assim, mas esse não é o caso..
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 17:40:14
|
InicianteJavaHenrique
GUJ Ranger
![[Avatar]](/images/avatar/6689263e6df1fbd89377d1dac02f87b0.png)
Membro desde: 16/02/2011 12:20:00
Mensagens: 806
Localização: São Vicente - SP
Offline
|
Não sou especialista. Mas, na minha opinião e nestes exemplos (me refiro ao seus 2 exemplos e não ao calculo de fatorial em si), ficaria melhor sem recursividade. Aqui tem um exemplo, bem parecido com o seu, porém um pouco mais resumido.
flw
|
Jogo de Xadrez com I.A feito em Java 2D. - HFS Softwares
Portal de Jogos - Questionário
"Felizes os Tópicos que estavam aqui neste dia: 07/12/2008, neste horário: 22:11:56 e neste local." - Henrique Ferreira da Silva
"O negócio de software é binário, você é 1 ou 0, vivo ou morto." - Filme Ameaça Virtual
"Existem 10 tipos de pessoas no mundo: as que entendem binário e as que não entendem."
"Compartilhar conhecimentos é uma forma de alcançar a imortalidade." - Dalai Lama
"Aquele que pergunta é um tolo por cinco minutos, mas aquele que não pergunta permanece um tolo para sempre." - Provérbio Chinês
"O topo da inteligência é alcançar a humildade." - Textos Judaicos
"Os computadores são incrivelmente rápidos, precisos e burros; Os homens são incrivelmente lentos, imprecisos e brilhantes; Juntos, seus poderes ultrapassam os limites da imaginação." - Albert Einstein
/**
*
* Programador Java
* @author Henrique Ferreira da Silva
* @since Julho/2010
*
*/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 18:08:09
|
saoj
JWizard
![[Avatar]](/images/avatar/2e7ceec8361275c4e31fee5fe422740b.png)
Membro desde: 09/03/2004 23:34:46
Mensagens: 2667
Localização: Chicago, EUA
Offline
|
Tem problemas que são mais simples via recursividade, outros mais simples via loop.
Se a solucão exigir muitas iteracões, vc não pode usar recursividade porque o stack é limitado.
Entenda bem os dois! Os problemas mais casca-grossa são mais fáceis de resolver via recursividade. Tentar resolve-los vai for é muito mais difícil. Não vale a pena nem comecar...
|
Sergio A Oliveira Jr. - saoj
ExperiMENTA:
Mentawai = http://www.mentaframework.org - Full-stack Java Web Framework com Configuracão Programática
MentaQueue = http://mentaqueue.soliveirajr.com - Queue de alta-performance.
MentaLog = http://mentalog.soliveirajr.com - Non-intrusive, fast, garbage-less, colored and straightforward logging
MentaBean = http://mentabean.soliveirajr.com - Tiny ORM with SQL Builder
MentaRegex = http://mentaregex.soliveirajr.com - Perl-style regex for Java.
MentaContainer = http://mentacontainer.soliveirajr.com - Straightforward IoC, DI e Auto-Wiring
Space4J = http://www.space4j.org - Banco-de-dados de Objetos em Memória
Options-Lib = https://github.com/saoj/options-lib - Ruby classes para ter acesso as opcoes do Yahoo Finance
Selleto = http://www.selleto.com.br
Flipinion = http://www.flipinion.com
Kawai = http://www.kawaiwiki.org
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2012 22:43:04
|
discorpio
Virtual Machine Man
Membro desde: 06/02/2010 18:46:46
Mensagens: 547
Localização: Rio de Janeiro
Offline
|
Boa noite a todos.
Sempre, eu digo, sempre opte pela simplicidade em qualquer caso.
Se o código sem a recursividade for mais simples e funciona, então é ele que você deve optar, caso contrário a recursividade seria melhor opção se este código fosse o mais simples a ser usado e funcionando, aliás, como já foi dito aqui, a recursividade sempre é bem funcional em casos mais complicados, tornando o mais simples.
Lembre-se, DEUS fez todo este universo através de uma singularidade, onde ele era menor do que a ponta do seu dedo indicador, e fazendo tudo de maneira simples, ou seja, juntou os elementos químicos básicos aqui, ali e acolá, e criou esta imensidão quase que imensurável, e porque não dizer infinito, ou quase infinito universo.
|
O Senhor é meu Pastor e nada me faltará. (Sl. 23:01) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2012 07:45:25
|
maior_abandonado
JWizard
![[Avatar]](/images/avatar/0d7c463832b871c20405a6c9296b5517.jpg)
Membro desde: 03/09/2007 11:30:08
Mensagens: 2694
Localização: sp
Offline
|
eu acredito que o código com o loop seja mais claro.
além do mais procuro somente usar recursividade quando é mesmo necessário, me parece um código um pouco menos claro que com o loop e gasta mais recursos.
|
espero ter ajudado...
falando nisso, caso seu problema tenha sido resolvido, edite o seu primeiro post e coloque um [RESOLVIDO] no titulo do tópico.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2012 07:47:09
|
drsmachado
GUJ Expert
Membro desde: 25/09/2010 12:54:06
Mensagens: 3986
Localização: Curitiba / São José dos Pinhais - PR
Offline
|
Nenhum dos dois, o tópico não segue as regras do fórum, está sem a formatação com a tag [code]
|
Rumo aos 4000
"Os homens de verdade assumem suas responsabilidades e culpas. Esquivar-se e dar desculpas é atitude dos tolos, que preferem não se comprometer".
Lugar de perguntar é no fórum!
Não respondo via MP
Não respondo por Email
Não respondo por IM |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/02/2012 17:36:11
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
A recursividade só é clara quando escreve explicitamente a fórmula. No caso do fatorial, a definição matemática clássica: Fat N = N * Fat(N-1), se n > 1 1, se n < 2 Então, só ficaria claro assim: No caso de um fatorial, provavelmente a solução com o loop será mais fácil de entender para a maior parte dos programadores. Agora, algorítmos de árvore, onde o pensamento recurso é natural, geralmente ficam mais claros da forma recursiva.
This message was edited 1 time. Last update was at 11/02/2012 17:37:06
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
|
|