Lista 1 MD2
LISTA 1 - MD2
Questão 1
O cálculo de n! utilizando recursividade (exemplo teste 5!);
import javax.swing.JOptionPane;
public class FatorialRecursivo {
public static int fatorial(int n) {
if (n == 0 || n == 1) {
return 1;
}
return n * fatorial(n - 1);
}
public static void main(String[] args) {
try {
String input = JOptionPane.showInputDialog("Digite um número inteiro não negativo:");
int var = Integer.parseInt(input);
if (var < 0) {
JOptionPane.showMessageDialog(null, "Fatorial não é definido para números negativos.");
} else {
int resultado = fatorial(var);
JOptionPane.showMessageDialog(null, "O fatorial de " + var + " é " + resultado);
}
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Por favor, insira um número inteiro válido.");
}
}
}
Questão 2
A sequência de Fibonacci;
import javax.swing.JOptionPane;
public class FibonacciRecursivo {
public static int fibonacci(int n) {
if (n == 1 || n == 2) {
return 1;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}
public static void main(String[] args) {
try {
String input = JOptionPane.showInputDialog("Digite o número de termos da sequência de Fibonacci:");
int num = Integer.parseInt(input);
if (num <= 0) {
JOptionPane.showMessageDialog(null, "Por favor, insira um número inteiro positivo.");
} else {
StringBuilder resultado = new StringBuilder("Sequência de Fibonacci até o " + num + "º termo:\n");
for (int i = 1; i <= num; i++) {
resultado.append(fibonacci(i)).append(" ");
}
JOptionPane.showMessageDialog(null, resultado.toString());
}
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Por favor, insira um número inteiro válido.");
}
}
}
Questão 3
A impressão recursiva dos números naturais de 1 a n (exemplo teste 1 a 10);
import javax.swing.JOptionPane;
public class ImprimeNumerosRecursivo {
public static void rec(int n, int var) {
if (n > var) {
return;
}
System.out.println(n);
rec(n + 1, var);
}
public static void main(String[] args) {
try {
String input = JOptionPane.showInputDialog("Digite um número natural:");
int var = Integer.parseInt(input);
if (var < 1) {
JOptionPane.showMessageDialog(null, "Deve-se digitar um número natural (maior ou igual a 1).");
} else {
System.out.println("Números de 1 até " + var + ":");
rec(1, var);
JOptionPane.showMessageDialog(null, "Os números foram impressos no console.");
}
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Por favor, insira um número inteiro válido.");
}
}
}
Questão 4
Um método recursivo que receba como entrada um número inteiro positivo n e retorne
1 + 2 + 3 + 4 + … + n;
import javax.swing.JOptionPane;
public class SomaRecursiva {
public static int soma(int n) {
if (n == 0) {
return 0;
}
return n + soma(n - 1);
}
public static void main(String[] args) {
try {
String input = JOptionPane.showInputDialog("Digite um número inteiro positivo:");
int var = Integer.parseInt(input);
if (var <= 0) {
JOptionPane.showMessageDialog(null, "Deve-se digitar um número inteiro positivo.");
} else {
int resultado = soma(var);
JOptionPane.showMessageDialog(null, "A soma dos números de 1 até " + var + " é " + resultado);
}
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Por favor, insira um número inteiro válido.");
}
}
}
Questão 5
Algoritmo de Euclides para o cálculo do MDC;
import javax.swing.JOptionPane;
public class MDCAlgoritmoEuclides {
public static int mdc(int a, int b) {
while (b != 0) {
int r = a % b;
a = b;
b = r;
}
return a;
}
public static void main(String[] args) {
try {
String inputA = JOptionPane.showInputDialog("Digite o número A:");
int a = Integer.parseInt(inputA);
String inputB = JOptionPane.showInputDialog("Digite o número B:");
int b = Integer.parseInt(inputB);
int resultado = mdc(a, b);
JOptionPane.showMessageDialog(null, "O MDC de " + a + " e " + b + " é " + resultado);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Por favor, insira apenas números inteiros.");
}
}
}
Questão 6
Calcular o MMC(a,b) a partir do MDC(a,b);
import javax.swing.JOptionPane;
public class MMCeMDC {
public static int mdc(int a, int b) {
while (b != 0) {
int r = a % b;
a = b;
b = r;
}
return a;
}
public static int mmc(int a, int b) {
return (a * b) / mdc(a, b);
}
public static void main(String[] args) {
try {
String inputA = JOptionPane.showInputDialog("Digite o número A:");
int a = Integer.parseInt(inputA);
String inputB = JOptionPane.showInputDialog("Digite o número B:");
int b = Integer.parseInt(inputB);
int resultadoMMC = mmc(a, b);
JOptionPane.showMessageDialog(null, "O MMC de " + a + " e " + b + " é " + resultadoMMC);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Por favor, insira apenas números inteiros.");
}
}
}
Questão 7
Tabela Z_n para adição modular;
import javax.swing.JOptionPane;
public class TabelaZnAdicaoModular {
public static int[][] criarTabelaZn(int n) {
int[][] tabela = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
tabela[i][j] = (i + j) % n;
}
}
return tabela;
}
public static String tabelaParaString(int[][] tabela) {
StringBuilder builder = new StringBuilder();
for (int[] linha : tabela) {
for (int valor : linha) {
builder.append(valor).append(" ");
}
builder.append("\n");
}
return builder.toString();
}
public static void main(String[] args) {
try {
String input = JOptionPane.showInputDialog("Digite o tamanho da tabela (n):");
int n = Integer.parseInt(input);
if (n <= 0) {
JOptionPane.showMessageDialog(null, "Por favor, insira um valor maior que zero.");
} else {
int[][] tabela = criarTabelaZn(n);
String tabelaString = tabelaParaString(tabela);
JOptionPane.showMessageDialog(null, "Tabela Z_" + n + ":\n" + tabelaString);
}
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Por favor, insira um número inteiro válido.");
}
}
}
Questão 8
Tabela Z_n para multiplicação modular.
import javax.swing.JOptionPane;
public class TabelaZnMultiplicacaoModular {
public static int[][] criarTabelaZn(int n) {
int[][] tabela = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
tabela[i][j] = (i * j) % n;
}
}
return tabela;
}
public static String tabelaParaString(int[][] tabela) {
StringBuilder builder = new StringBuilder();
for (int[] linha : tabela) {
for (int valor : linha) {
builder.append(valor).append(" ");
}
builder.append("\n");
}
return builder.toString();
}
public static void main(String[] args) {
try {
String input = JOptionPane.showInputDialog("Digite o tamanho da tabela (n):");
int n = Integer.parseInt(input);
if (n <= 0) {
JOptionPane.showMessageDialog(null, "Por favor, insira um valor maior que zero.");
} else {
int[][] tabela = criarTabelaZn(n);
String tabelaString = tabelaParaString(tabela);
JOptionPane.showMessageDialog(null, "Tabela Z_" + n + " (Multiplicação Modular):\n" + tabelaString);
}
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(null, "Por favor, insira um número inteiro válido.");
}
}
}