Recursão Matemática
- O cálculo de n! utilizando recursividade (exemplo teste 5!)
def fatorial(n):
if n == 0: return 1 # caso base
else: return n*fatorial(n-1) # chamada recursiva
resultado = fatorial(5)
print(f"O fatorial de 5 é: {resultado}")
- A sequência de Fibonacci
def fibonacci(n):
if n == 0 or n == 1: return n # caso base
else: return fibonacci(n-1) + fibonacci(n-2) # chamada recursiva
for i in range(10):
print(f'Fibonacci({i}) = {fibonacci(i)}')
- A impressão recursiva dos números naturais de 1 a n (exemplo teste 1 a 10)
def imprimir(n, i=1):
if i > n: return # caso base
print(f"{i}")
imprimir(n, i+1) # chamada recursiva
imprimir(10)
- Um método recursivo que receba como entrada um número inteiro positivo n e retorne 1 + 2 + 3 + 4 + … + n
def soma(n):
if n < 1: return
if n == 1: return 1 # caso base
else: return n + soma(n-1) # chamada recursiva
resultado = soma(10)
print(f"A soma de 1 + 2 + 3 + ... + 10 = {resultado}")
Divisibilidade
- Algoritmo de Euclides para o cálculo do MDC
def mdc(a, b):
if b == 0: return a # caso base
else: return mdc(b, a%b) # chamada recursiva
resultado = mdc(20, 56)
print(f"O MDC entre 20 e 56 é: {resultado}")
- Calcular o MMC(a,b) a partir do MDC(a,b)
def mdc(a, b):
if b == 0: return a # caso base
else: return mdc(b, a%b) # chamada recursiva
def mmc(a,b):
return abs(a * b) // mdc(a, b)
resultado = mmc(20, 56)
print(f"O MMC entre 20 e 56 é: {resultado}")
Aritmética Modular
- Tabela Z_n para adição modular
def tabela_add(n):
tabela = []
for a in range(n):
linha = []
for b in range(n):
linha.append((a+b)%n)
tabela.append(linha)
print(f"Tabela Z_{n} (Adição Modular):")
for linha in tabela:
print(" ".join(map(str, linha)))
tabela_add(5)
- Tabela Z_n para multiplicação modular
def tabela_mult(n):
tabela = []
for a in range(n):
linha = []
for b in range(n):
linha.append((a*b)%n)
tabela.append(linha)
print(f"Tabela Z_{n} (Multiplicação Modular):")
for linha in tabela:
print(" ".join(map(str, linha)))
tabela_mult(5)