FGA0108 - MATEMÁTICA DISCRETA 2 - T03 - CRISTIANE LOESCH
Exercicio de Programação MD2 - 211062956
Jésus Gabriel Carvalho Ventura -211062956
RECURSÃO MATEMÁTICA
1. o cálculo de n! utilizando recursividade (exemplo teste 5!)
def fatorial(n):
"""Calcula o fatorial de um número n usando recursividade.
Args:
n: Um número inteiro não negativo.
Returns:
O fatorial de n.
"""
if n == 0 or n == 1:
return 1 # Caso base: 0! ou 1! é 1
else:
return n * fatorial(n - 1) # Passo recursivo
# Exemplo de uso
numero = 5 #Coloque aqui o fatorial que deseja calcular
resultado = fatorial(numero)
print(f"O fatorial de {numero} é {resultado}")
2. a sequência de Fibonacci
def fibonacci(n):
# Caso base: o primeiro e o segundo números da sequência são 0 e 1
if n == 0:
return 0
elif n == 1:
return 1
# Passo recursivo: Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2)
else:
return fibonacci(n - 1) + fibonacci(n - 2)
# Exemplo de teste: calcular os primeiros 10 números da sequência de Fibonacci
quantidade = 10
print("Sequência de Fibonacci:")
for i in range(quantidade):
print(fibonacci(i), end=" ")
3. a impressão recursiva dos números naturais de 1 a n (exemplo teste 1 a 10)
def imprimir_numeros(n, atual=1):
# Caso base: quando o número atual ultrapassa n, a recursão para
if atual > n:
return
# Imprime o número atual
print(atual, end=" ")
# Chama a função novamente com o próximo número
imprimir_numeros(n, atual + 1)
# Exemplo de teste: imprimir números de 1 a 10
n = 10
print(f"Números de 1 a {n}:")
imprimir_numeros(n)
4. um método recursivo que receba como entrada um número inteiro positivo n e retorne 1 + 2 + 3 + 4 + … + n
def soma_recursiva(n):
# Caso base: se n é 1, retorna 1
if n == 1:
return 1
# Passo recursivo: soma o número atual com a soma dos números anteriores
else:
return n + soma_recursiva(n - 1)
# Exemplo de teste: calcular a soma de 1 a 10
n = 10
resultado = soma_recursiva(n)
print(f"A soma de 1 a {n} é {resultado}")
DIVISIBILIDADE
5. Algoritmo de Euclides para o cálculo do MDC
def mdc(a, b):
# Caso base: se o resto é 0, o MDC é o divisor atual
if b == 0:
return a
# Passo recursivo: aplica o algoritmo de Euclides
return mdc(b, a % b)
# Exemplo de teste: calcular o MDC de 56 e 98
numero1 = 56
numero2 = 98
resultado = mdc(numero1, numero2)
print(f"O MDC de {numero1} e {numero2} é {resultado}")
6. Calcular o MMC(a,b) a partir do MDC(a,b)
def mdc(a, b):
# Algoritmo de Euclides para o MDC
if b == 0:
return a
return mdc(b, a % b)
def mmc(a, b):
# Calcula o MMC usando a fórmula MMC(a, b) = |a * b| / MDC(a, b)
return abs(a * b) // mdc(a, b)
# Exemplo de teste: calcular o MMC de 15 e 20
numero1 = 15
numero2 = 20
resultado = mmc(numero1, numero2)
print(f"O MMC de {numero1} e {numero2} é {resultado}")
ARITMÉTICA MODULAR
7. Tabela Z_n para adição modular
def tabela_zn_adicao(n):
# Inicializa uma matriz para a tabela
tabela = [[(a + b) % n for b in range(n)] for a in range(n)]
return tabela
def exibir_tabela(tabela):
# Exibe a tabela formatada
print("Tabela Z_n para adição modular:")
for linha in tabela:
print(" ".join(f"{num:2}" for num in linha))
# Exemplo de teste: tabela Z_5
n = 5
tabela = tabela_zn_adicao(n)
exibir_tabela(tabela)
8. Tabela Z_n para multiplicação modular
def tabela_zn_multiplicacao(n):
# Inicializa uma matriz para a tabela
tabela = [[(a * b) % n for b in range(n)] for a in range(n)]
return tabela
def exibir_tabela(tabela):
# Exibe a tabela formatada
print("Tabela Z_n para multiplicação modular:")
for linha in tabela:
print(" ".join(f"{num:2}" for num in linha))
# Exemplo de teste: tabela Z_5
n = 5
tabela = tabela_zn_multiplicacao(n)
exibir_tabela(tabela)