System.out.println("O fatorial deste numero e: " +fat)
tá faltando o “;”
o correto seria assim ó:
System.out.println("O fatorial deste numero e: " +fat);
System.out.println("O fatorial deste numero e: " +fat)
tá faltando o “;”
o correto seria assim ó:
System.out.println("O fatorial deste numero e: " +fat);
public class Farorial{
public static void main(String[] args){
int i, j, fat = 1;
for (i = 1; i<=j;i++);
System.out.println("Digite um numero:" + j);
if (j <=1){
return 1;
}else{
return fat = j*fat(j-1);
System.out.println("O fatorial deste numero e: " +fat);// <---- ;
}}}
Estão faltando 2 “;”!!!
Um é no seu “if” e o outro no “System.out…”
[quote=edmarr]Afff vcs tem que deixar o cara pensar ,
o cara chega pede e vcs ja fazem
tenho certeza que ele so vai copiar e colar ,
ou seja nem vai atentar para saber como
a solução foi feita .[/quote]
Justo!
[quote=leo.junior]Estão faltando 2 “;”!!!
Um é no seu “if” e o outro no “System.out…”[/quote]
nem reparei no outro hauhauh
depois dessa vo criar um usuario com nome de mulher e pegar uma foto qualquer no google para sempre que precisar de alguma coisa no forum… :x
caramba passam assim exercicio de mão bejada desse jeito…por isso que sempre tem uns folgados vindo pedir para resolvermos os exercicios da faculdade deles…sempre tem quem faça mesmo…
[quote=maior_abandonado]depois dessa vo criar um usuario com nome de mulher e pegar uma foto qualquer no google para sempre que precisar de alguma coisa no forum… :x
caramba passam assim exercicio de mão bejada desse jeito…por isso que sempre tem uns folgados vindo pedir para resolvermos os exercicios da faculdade deles…sempre tem quem faça mesmo…[/quote]
\o/
Realmente estava faltando mesmo…rsrs…Mas agora o erro é outro. Está dizendo que não pode retornar um valor em que o resultado for “vazio”…
está assim:
public class Fatorial{
public static void main(String[] args){
int i, j, fat = 1;
for (i = 1; i<=j;i++);
System.out.println("Digite um numero:" + j);
if (j <=1) return 1;
else
return fat = j*fat(j-1);
System.out.println("O fatorial deste numero e: " +fat);
}
}
e o erro é esse:
[code]C:\Samanta\exercicio java3.02\Fatorial.java:6: cannot return a value from method whose result type is void
if (j <=1) return 1;
^
C:\Samanta\exercicio java3.02\Fatorial.java:8: cannot return a value from method whose result type is void
return fat = j*fat(j-1);
^
2 errors
Ferramenta concluída com código de saída 1[/code]
[color=red]Nossa…esse negocio de java deixa qualquer iniciante de cabelos em pé!!rs[/color] :shock:
2
Ajudei em um outro tópico e ainda assim fui chamado de orgulhoso porque não fiz o loop, deixei comentado como teria que ser feito.
Cruzes,gente…
Vcs estão ai me esculaxando a toa. Primeiramente, eu sou mulher sim,e com muito orgulho…
E outra, eu estou tentando aprender java sozinha, sem a ajuda de ninguem. Nunca tinha aprendido isso na vida, estou vendo agora. Não tem pq vcs ficarem falando comigo desse jeito. Se um ou outro não quiser me ajudar, ao inves de falar besteira, deixe que outra pessoa me ajude.
Acho que esse forum esta ai p isso, para ajudar. Sempre que vou pedir ajuda, eu tento fazer os programas antes. Dessa vez eu esqueci de colocar, mas logo depois eu coloquei e da para ver que esta diferente do que o que o rapaz me mandou.
Isso não é para todos, agradeço a todos que estão tentando me ajudar, mas não é justo comigo uns e outros ficarem falando besteira se não estão perto de mim para ver meu esforço.
vc deve criar um metodo retornando um int ,
dai entao vc podera usar a palavra reservada return;
Na verdade o erro é que vc não pode ter um “return” em um método void!!!
[quote=samanta.santos]Cruzes,gente…
Vcs estão ai me esculaxando a toa. Primeiramente, eu sou mulher sim,e com muito orgulho…
E outra, eu estou tentando aprender java sozinha, sem a ajuda de ninguem. Nunca tinha aprendido isso na vida, estou vendo agora. Não tem pq vcs ficarem falando comigo desse jeito. Se um ou outro não quiser me ajudar, ao inves de falar besteira, deixe que outra pessoa me ajude.
Acho que esse forum esta ai p isso, para ajudar. Sempre que vou pedir ajuda, eu tento fazer os programas antes. Dessa vez eu esqueci de colocar, mas logo depois eu coloquei e da para ver que esta diferente do que o que o rapaz me mandou.
Isso não é para todos, agradeço a todos que estão tentando me ajudar, mas não é justo comigo uns e outros ficarem falando besteira se não estão perto de mim para ver meu esforço.
[/quote]
o problema não é você pedir ajuda, o problema é quando as pessoas querem código pronto e funcionando, ai ja é ser folgado, eu ajudo algumas pessoas aqui quando posso, mas costumo o fazer com pessoas que tentam fazer sozinhos antes de pedir ajuda, perguntam como fazer ou onde estão errados, e não querem código pronto… por causa de gente assim (não to dizendo que você seja nem que não seja) que sou contra passar codigo pronto…
a ironia com o fato de você ser mulher é por que quando quem pergunta é mulher normalmente as respostas vem muito mais rapidas, codigo pronto e testado… quando quem pergunta é homem ai a história é outra…
só para constar… você pediu ajuda, não pediu para resolverem para você como foi feito, por outro lado também não disse onde estavam suas dificuldades, não pediu nenhuma explicação.
[quote=caraujocruz][quote]
depois dessa vo criar um usuario com nome de mulher e pegar uma foto qualquer no google para sempre que precisar de alguma coisa no forum…
caramba passam assim exercicio de mão bejada desse jeito…por isso que sempre tem uns folgados vindo pedir para resolvermos os exercicios da faculdade deles…sempre tem quem faça mesmo…
[/quote]
2
Ajudei em um outro tópico e ainda assim fui chamado de orgulhoso porque não fiz o loop, deixei comentado como teria que ser feito.
[/quote]
se for um outro tópico que acho que vi aquele la não conta…rs aquela figura la é unica…hehe
=(
É verdade , não é legal ficar dando a resposta como dei , peço desculpas - entregar de mão beijada não dá.
Pois bem , vc realmente é bem iniciante em JAVA e em PROGRAMAÇÂO .
Se fosse vc eu procuraria estudar um pouquinho mais antes de tentar fazer alguma coisa por mais simples que o problema possa parecer vc cometeu um monte de erros , todos bestas - na minha opinião , principalmente pela falta de experiencia.
Um otimo livro que aconselho é o Use a Cabeça Java .
Se fosse pra apostar diria que vc ta usando o Java Como Programar , se isso for verdade saiba que esse é um livro bem completo , mas é usado principalmente pra consulta - eu nunca conheci alguem que aprendeu Java lendo aquele livro todo .
Bem , desculpe se está me achando grosso não foi essa minha intenção.
Existem muitos foruns , no GUJ mesmo que indicam bons livros pros iniciantes , dá uma olhada.
=P
Bem é isso .
Vlw pela dica…Vou ver direitinho
[quote=samanta.santos][color=red]Bom dia, alguém pode me ajudar a fazer esse exercício?[/color]
[color=red]Imprima os fatoriais
O fatorial de um número n é n * n-1 * n-2 … até n = 1. Lembre-se de utilizar os parênteses. O fatorial de 0 é
1 O fatorial de 1 é (0!) * 1 = 1 O fatorial de 2 é (1!) * 2 = 2 O fatorial de 3 é (2!) * 3 = 6 O fatorial de 4 é (3!) *
4 = 24[/color][/quote]
Vamos pelo começo:
Uma função é um conceito matemático onde você passa uma ou mais elementos para ela, números normalmente, e ela te retorna um resultado, uma para cada entrada diferente que você colocar.
Exemplo
A função F recebe um x, e te retorna um y. F(x) = y. O corpo da função F é x². Então F recebe um número x, e te retorna o quadrado dele. Isto em Java seria:
public double F (double x)
{
double y = x * x;
return y;
}
Aí cabe uma decontrução de coisas de linguagens de programação, como o Java. Java é uma linguagem que dizemos que tem uma tipagem estática e forte, e isto quer dizer que você define o tipo das variáveis, e o tipo de retorno de funções. No exemplo acima:
public: é um modificador de acesso da função, quer dizer que qualquer classe de fora pode acessar este método da classe.
double F: double é o tipo de retorno, que são números reais (também conhecidos como números de ponto flutuante), e F é o nome da função.
(double x): dentro do parênteses fica a declaração dos parâmetros da função, que usamos para mandar os números e outros objetos para dentro da função quando o chamamos.
{}: Entre chaves fica o corpo da função, onde se implemente o que ele faz, através de vários comandos.
double y: é uma variável de nome y com o tipo double.
return: usamos para apontar que número da função irá retornar. Depois que e dado o return, a função acaba imediatamente.
Uma observação, em Java, cada linha de comando/expressão que você usar, tem que terminar ela com ; (ponto-e-vírgula).
Outro método:
public void imprimir(double numero)
{
System.out.println(numero);
}
De novo temos aqui é que este método não retorna nada. Para métodos que não retornam valores nós colocamos o tipo void para ele, que significa vazio. Dentro do corpo do método também não tem nenhum return, já que ele não retorna nada mesmo. O tipo void só pode user usado para métodos, variáveis sempre tem um tipo que não é vazio.
Para os dois métodos acima, os chamamos desta forma:
public void calcular()
{
double a = F(1);
double b = F(2);
double c = F(3);
imprimir(a); //imprime 1.0
imprimir(b); //imprime 4.0
imprimir(c); //imprime 9.0
}
Outra modalidade de funções que existem são umas que chamam elas mesmas dentro do código. Como esta:
public double G(double numero)
{
double x = 1 + G(numero);
return x;
}
Esta funcão calcula o valor dela mesma + 1. Um problema grave de funções recursivas é que elas acabam chamando elas mesmas, que chamam elas mesmas, que chamam elas mesmas, que chamam elas mesmas, sem fim. Isto vai acabar estourando a memória destinada para executar estas funções pois não tem fim. A solução é colocar um fim nelas. É o que chamamos o ponto de parada.
public double G(double numero)
{
if (numero <= 0)
return 0;
double x = 1 + G(numero - 1);
return x;
}
A modificação que fiz acima é para quando passarmos um número menor ou igual a zero, a função irá retornar um zero. Outra modificação é ir diminuindo o número repassado, para que ele chegue de poucos em poucos até a condição de parada. Se chamarmos o número 2, a função vai chamar ela mesma com o número 1, que por sua vez, irá passar um 0, e aí sim irá retornar um número de verdade. Retornando 0 para cima, a função soma este 0 com 1, e retorna 1. A função acima recebe este 1, soma com mais 1, e retorna 2. Retornando este 2, a função acaba, sem mais recursões, e volta para o programa que chamou a função originalmente.
Desta forma finalmente chegamos ao fatorial:
Então
0! é 1
1! é 0! * 1
2! é 1! * 2
3! é 2! * 3
4! é 3! * 4
A condição de parada é que quando cheguemos a zero, ele retorne 1. Então
if (numero == 0)
return 1;
A continuação acontece para qualquer outro número maior que zero, onde fazemos que o fatorial de um número é o fatorial do número menos um, vezes o próprio número
else
return fatorial (numero - 1) * numero;
Juntando tudo:
public int fatorial(int numero) // o fatorial de um número
{
if (numero == 0)
return 1; // é 1 caso o número seja 0
else
return fatorial (numero - 1) * numero; // é fatorial(n-1)*n caso contrario
}
Só um aviso, só existem fatoriais de números naturais, ou seja, inteiros e positivos. Não passe um número menor que zero, ou outro número real.
Também podem ocorrer problemas se tentar fatoriais de números muito grandes, o integer do Java tem um limite de tamanho até o número 2.147.483.647.
Também há maneiras de resolver isto sem recursão.
Programa final:
public class Programa
{
public static void main(String[] args)
{
Programa p = new Programa();
int fatorialDe10 = p.fatorial(10);
System.out.println(fatorialDe10); // imprime 3628800
}
public int fatorial(int numero) // o fatorial de um número
{
if (numero == 0)
return 1; // é 1 caso o número seja 0
else
return fatorial (numero - 1) * numero; // é fatorial(n-1)*n caso contrario
}
}
[quote=maior_abandonado]depois dessa vo criar um usuario com nome de mulher e pegar uma foto qualquer no google para sempre que precisar de alguma coisa no forum… :x
caramba passam assim exercicio de mão bejada desse jeito…por isso que sempre tem uns folgados vindo pedir para resolvermos os exercicios da faculdade deles…sempre tem quem faça mesmo…[/quote]
++
Ola, infelizmente seu codigo esta muito errado, vou colocar aqui alguns erros que eu vejo de primeira vista:
if (j <=1) return 1
else
return fat = j*fat(j-1);
System.out.println("O fatorial deste numero e: " +fat);
Isto acima vai gerar um erro de compilação já que vc ou no if ou no else vai sair da função usando a palavra reservada return, logo este ultimo System.out.println nunca vai ser chamado.
int i, j, fat = 1;
return fat = j*fat(j-1);
Aqui seu codigo faz pouco sentido, primeiro vc declara a variavel fat como um int, depois vc tenta utilizar a mesma como uma função, atribuindo o resultado a ela mesma.
fat(j-1);
O que vc deve fazer, é criar um outro método, fora do main, chamado fat, que faça esta chamada recurciva algo assim:
public static void main(String []args) {
//instancia a classe
System.out.println(classeInstanciada.fat(5));
}
public double fat(double value) {
//aqui vai ter aquele seu if (j <= 1) e a chamada recursiva da função (j*fat(j-1);)
}
Espero ter ajudado a clarear a sua mente.