Recursão Matemática
- o cálculo de n! utilizando recursividade (exemplo teste 5!)
def fatorial(n):
if n == 0 or n == 1: # Base da recursão
return 1
return n * fatorial(n - 1) # Passo recursivo
if __name__ == "__main__":
# Teste com entrada fixa
resultado = fatorial(5)
print(resultado) # Saída: 120
- a sequência de Fibonacci
def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
return fibonacci(n - 1) + fibonacci(n - 2)
if __name__ == "__main__":
# Teste com uma sequência fixa
for i in range(10):
print(fibonacci(i), end=" ") # Saída esperada: 0 1 1 2 3 5 8 13 21 34
- a impressão recursiva dos números naturais de 1 a n (exemplo teste 1 a 10)
def imprimir_naturais(n):
if n == 0:
return
imprimir_naturais(n - 1)
print(n, end=" ")
# Teste
imprimir_naturais(10) # Saída: 1 2 3 4 5 6 7 8 9 10
- 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):
if n == 0:
return 0
return n + soma_recursiva(n - 1)
if __name__ == "__main__":
try:
n = int(input("Digite um número inteiro positivo: "))
if n < 0:
print("Por favor, insira um número positivo.")
else:
print(f"A soma dos números de 1 a {n} é {soma_recursiva(n)}")
except ValueError:
print("Por favor, insira um número inteiro válido.")
Divisibilidade
- Algoritmo de Euclides para o cálculo do MDC
def mdc(a, b):
if b == 0:
return a
return mdc(b, a % b)
if __name__ == "__main__":
try:
# Entrada dos valores
a = int(input("Digite o primeiro número (a): "))
b = int(input("Digite o segundo número (b): "))
if a < 0 or b < 0:
print("Por favor, insira números inteiros positivos.")
else:
print(f"O MDC de ({a},{b})é {mdc(a, b)}")
except ValueError:
print("Por favor, insira números inteiros válidos.")
- Calcular o MMC(a,b) a partir do MDC(a,b)
def mdc(a, b):
if b == 0:
return a
return mdc(b, a % b)
def mmc(a, b):
return abs(a * b) // mdc(a, b) # Fórmula do MMC usando o MDC
if __name__ == "__main__":
try:
a = int(input("Digite o primeiro número (a): "))
b = int(input("Digite o segundo número (b): "))
if a <= 0 or b <= 0:
print("Por favor, insira números inteiros positivos.")
else:
print(f"O MMC de ({a} , {b}) é {mmc(a, b)}")
except ValueError:
print("Por favor, insira números inteiros válidos.")
ARITMÉTICA MODULAR
- Tabela Z_n para adição modular
def tabela_adicao_modular(n):
tabela = [[(i + j) % n for j in range(n)] for i in range(n)]
return tabela
if __name__ == "__main__":
try:
n = int(input("Digite o valor de n para a tabela Z_n: "))
if n <= 0:
print("Por favor, insira um número inteiro positivo.")
else:
tabela = tabela_adicao_modular(n)
print(f"Tabela de adição modular Z_{n}:")
for linha in tabela:
print(linha)
except ValueError:
print("Por favor, insira um número inteiro válido.")
- Tabela Z_n para multiplicação modular
def tabela_multiplicacao_modular(n):
tabela = [[(i * j) % n for j in range(n)] for i in range(n)]
return tabela
if __name__ == "__main__":
try:
n = int(input("Digite o valor de n para a tabela Z_n: "))
if n <= 0:
print("Por favor, insira um número inteiro positivo.")
else:
tabela = tabela_multiplicacao_modular(n)
print(f"Tabela de multiplicação modular Z_{n}:")
for linha in tabela:
print(linha)
except ValueError:
print("Por favor, insira um número inteiro válido.")