Exercício de algoritmos

Olá pessoa,estou com dificuldades para resolução de alguns exercícios de algoritmos e por favor se puderem me ajudar agradeço!

  1. (1.0) O objetivo do método abaixo é calcular a potência de xn, onde x é um número real e n um número inteiro positivo. Por exemplo, se n=5 e x=3.0 ele deverá calcular (3.0)5 = 243.0. Porém, existem alguns erros de lógica (faltam algumas linhas de código e temos também instruções incorretas). Você deverá reescrever o código para que ele calcule a potência corretamente.

public int potencia(double x, int n) {
double acumula = 1;
while (n >= 0) {
acumula = x * x;
n = n ? 2;
}
return acumula;
}

leia com atenção:



http://www.ime.usp.br/~pf/algoritmos/aulas/recu.html

Acho que esse exercício nem carece de recursividade. O seu laço não está ok…

public double potencia(double x, int n) {
  double acumula = 1;

  for (int i = 1; i <= n; i++){
    acumula *= x;
  }

  
  return acumula;
} 

Deve ser algo assim.

[quote=CintiaDR]Acho que esse exercício nem carece de recursividade. O seu laço não está ok…

public double potencia(double x, int n) {
  double acumula = 1;

  for (int i = 1; i <= n; i++){
    acumula *= x;
  }

  
  return acumula;
} 

Deve ser algo assim. [/quote]
Está perfeito. O tópico sobre recursividade ajuda a pessoa aprender a resolver esses tipos de problema.

Muito obrigada pela ajuda de vocês,só que tenho algumas dúvidas ainda,aproveitando estou colocando aqui.Obrigadaa! :slight_smile:

a)Crie uma classe Conjunto que armazenará um conjunto de números reais (double). Nesta classe você deverá ter um construtor que receberá a capacidade deste conjunto. Um método insere por onde você adiciona elementos no vetor, um método limpa que faz o conjunto ficar vazio e um método que verifica se o conjunto está cheio.

b) Escreva um método que recebe um vetor v de números inteiros preenchido com valores entre 1 e 100. Seu método deverá retornar a frequência de cada um desses números, ou seja, o número de vezes que o número 1 aparece no vetor v, o número de vezes que o 2 aparece no vetor v e assim sucessivamente até o número 100.

c)Escreva um programa que lê um número inteiro n positivo e uma sequência de n números inteiros positivos. Seu programa deverá imprimir a quantidade de números da sequência que são primos. Dizemos que um número é primo se os únicos divisores positivos forem o 1 e o próprio número. Por exemplo, se n=7 e a sequência dos números for: 3, 4, 8, 23, 17, 35 e 11. Seu programa deverá imprimir: são 4 números primos. Dica, construa primeiramente um método que dado um número inteiro verificar se ele é primo ou não e depois utilize dentro do seu programa o método

[quote=aprendizJava01]Muito obrigada pela ajuda de vocês,só que tenho algumas dúvidas ainda,aproveitando estou colocando aqui.Obrigadaa! :slight_smile:

a)Crie uma classe Conjunto que armazenará um conjunto de números reais (double). Nesta classe você deverá ter um construtor que receberá a capacidade deste conjunto. Um método insere por onde você adiciona elementos no vetor, um método limpa que faz o conjunto ficar vazio e um método que verifica se o conjunto está cheio.
[/quote]
conceitos aqui estão misturados.

[quote]
b) Escreva um método que recebe um vetor v de números inteiros preenchido com valores entre 1 e 100. Seu método deverá retornar a frequência de cada um desses números, ou seja, o número de vezes que o número 1 aparece no vetor v, o número de vezes que o 2 aparece no vetor v e assim sucessivamente até o número 100. [/quote]
Recursão.

[quote=Marcio Duran][quote=aprendizJava01]Muito obrigada pela ajuda de vocês,só que tenho algumas dúvidas ainda,aproveitando estou colocando aqui.Obrigadaa! :slight_smile:

a)Crie uma classe Conjunto que armazenará um conjunto de números reais (double). Nesta classe você deverá ter um construtor que receberá a capacidade deste conjunto. Um método insere por onde você adiciona elementos no vetor, um método limpa que faz o conjunto ficar vazio e um método que verifica se o conjunto está cheio.
[/quote]
conceitos aqui estão misturados.

Na segunda opção não acho legal vc usar recursão por um simples motivo:
Você deve estar iniciando e recursividade é algo avançado.

Pense um pouco, você pode usar um laço dentro de outro para percorrer o vetor v vezes e contar cada número de uma vez. Essa seria uma solução fácil (e porca heheh).