Funções recursivas e saída de código estranha  XML
Índice dos Fóruns » Certificação Java
Autor Mensagem
danielbussade
JavaEvangelist

Membro desde: 13/09/2007 09:26:21
Mensagens: 415
Localização: Itaperuna -RJ
Offline

Olá a todos, alguém poderia me explicar a saída do código abaixo:


Eu achei que seria 126, mas a resposta é 138.

Obrigado

When you steal from one author, is called plagiarism, when you steal from many is called research.

[WWW] [MSN]
evandro.santos
JavaChild
[Avatar]

Membro desde: 01/02/2010 11:06:04
Mensagens: 115
Localização: Salvador-BA
Offline

Coloca outros System.out no código e você poderá acompanhar passo a passo....

Evandro Rosa Santos
----------------------------------------------------
Bacharel em Informática
Sun Certified Java Programmer (SCJP) 5.0
Analista de Sistemas
http://www.evandrosantos.com
[WWW] [MSN]
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

Isso é da prova de analista do Banco Central. Que tal usar o depurador de sua preferência (Netbeans ou Eclipse) e acompanhar passo a passo os valores das variáveis?
danielbussade
JavaEvangelist

Membro desde: 13/09/2007 09:26:21
Mensagens: 415
Localização: Itaperuna -RJ
Offline

Obrigado. Mas eu já entendi, eu não tinha entendido que o último return e o return da chamada recursiva e não da primeira chamada.

When you steal from one author, is called plagiarism, when you steal from many is called research.

[WWW] [MSN]
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

Queria saber se você foi bem nessa prova (o gabarito saiu ontem mesmo). Quantas questões você acertou?
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

danielbussade wrote:Olá a todos, alguém poderia me explicar a saída do código abaixo:


Eu achei que seria 126, mas a resposta é 138.


Primeiro for, some 1 em x para todos os valores de 0 a 119. x = 120
Segundo for, some 2 em y para todos os impares de 1 a 5 . y = 6 (existem 3 impares, 3*2 =6)

Terceiro, somes 120 com 6 e o resultado do metodo x aplicado a 6 ( que dá 12)

z= 120 + 6 + 12 = 138 cqd

P.S. O objetivo destes exercicios é ver se vc entende codigo. Correr o codigo vai lhe dar o resultado, mas não vai explicar por quê.

This message was edited 1 time. Last update was at 02/02/2010 12:25:16


Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

Isso não era exatamente um "exercício". Vale um salário de R$ 13.000,00 no Banco Central
De qualquer maneira, há uma maneira relativamente simples de rodar uma rotina recursiva "no braço". Basta você criar um tipo de planilha com os valores:

x(0) = 0
x(1) = 0
x(2) = 0
x(3) = 3 + x(2) = 3 + 0 = 3
x(4) = 3 + x(3) = 3 + 3 = 6

e assim por diante.
evertonsilvagomesjava
GUJ Master
[Avatar]

Membro desde: 23/08/2009 13:14:01
Mensagens: 1924
Offline

como que funciona essa chamada?

pq ele testa no if(n>2), e retorna true pq o n é 6, ele retorna 3+x(n-1) aqui ele chama o método de novo passando 5? passa e chama o metodo passando 4? é isso?
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

entanglement wrote:Isso não era exatamente um "exercício". Vale um salário de R$ 13.000,00 no Banco Central


O que eu quiz dizer é que para saber resolver tem que fazer na mão já que na prova não pode rodar um debugger.
Aliás, se precisa de um debugger pare entender o codigo é melhor mudar de profissão.

É um exercicio muito simples para esse valor de salário...
[WWW]
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

evertonsilvagomesjava wrote:como que funciona essa chamada?

pq ele testa no if(n>2), e retorna true pq o n é 6, ele retorna 3+x(n-1) aqui ele chama o método de novo passando 5? passa e chama o metodo passando 4? é isso?


@Everton: Não queria dizer isso, já que vale R$ 13.000,00 por mês e eu acho que quem quer ganhar R$ 13.000,00 sendo analista de TI teria de saber isso, mas basicamente é isso mesmo.

Seu professor não ensinou como calcular o fatorial de maneira recursiva, ou você faltou a essa aula?

@Daniel: Acho que embora a questão tenha sido formulada com base em um programa que é legal* em Java, ela pode ser contestada, já que o uso de "x" como nome de função e nome de variável em um mesmo contexto, significando coisas diferentes em uma mesma expressão, só existe em Java (não existe em C#, por exemplo, ou em C++), e pode levar a confusão, conforme você mesmo percebeu. Portanto, talvez essa questão possa até ser anulada, por ser maliciosa ("pegadinha").

* Legal no sentido de "de acordo com a Java Language Specification". Faça isso (declarar uma variável e um método com o mesmo nome, e misturar os dois em uma mesma expressão) em uma prova de emprego e o seu examinador vai lhe tirar pontos, já que isso leva a código confuso e sujeito a erros.
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

entanglement wrote:
@Daniel: Acho que embora a questão tenha sido formulada com base em um programa que é legal* em Java, ela pode ser contestada, já que o uso de "x" como nome de função e nome de variável em um mesmo contexto, significando coisas diferentes em uma mesma expressão, só existe em Java (não existe em C#, por exemplo, ou em C++), e pode levar a confusão, conforme você mesmo percebeu. Portanto, talvez essa questão possa até ser anulada, por ser maliciosa ("pegadinha").


bom, teria que ver o enunciado, mas se o enunciado tem algo do tipo "considere este codigo em Java. O que é impresso na tela" está mais que válido. Se o cada não sabe java, o problema é dele. Veja que a escolha de java pode não ser aleatória (que o a politica do governo se move para software aberto e a maioria é em java). Claro que poderiamos ter a mesma pergunta em pseudo-codigo ou em ruby. O uso de sombreamento não é pegadinha é algo que se espera que um programdor java conheça. A pergunta sim é especifica em java, mas sem conhecer o edital ou o enunciado, não me parece que só isso a classifique para anulamento.

Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

Prova Analista TI Banco Central

É a questão 28.
vmsb11
Java Ninja

Membro desde: 25/08/2008 12:35:00
Mensagens: 251
Offline

aproveitando o tópico, onde encontrar informações referentes a estes concursos relacionados a área da informática????....

boa sorte no resultado da prova danielbussade
evertonsilvagomesjava
GUJ Master
[Avatar]

Membro desde: 23/08/2009 13:14:01
Mensagens: 1924
Offline

entaglement nunca tive aula, vou começar faculdade agora em fevereiro, se vc nao quiser explicar sinta-se a vontade nao posso forçar ninguem a me explicar, de fato eu nao entendi como que seria o retorno ali, se ele so vai retornar quando sair do método recursivo ou algo assim...

This message was edited 1 time. Last update was at 02/02/2010 14:55:07

danielbussade
JavaEvangelist

Membro desde: 13/09/2007 09:26:21
Mensagens: 415
Localização: Itaperuna -RJ
Offline

entanglement wrote:Queria saber se você foi bem nessa prova (o gabarito saiu ontem mesmo). Quantas questões você acertou?


Olá, na verdade eu não fiz a prova. Só dei uma olhada para ver as questões da mesma.


Valeu
[WWW] [MSN]
 
Índice dos Fóruns » Certificação Java
Ir para:   
Powered by JForum 2.1.8 © JForum Team