Faça uma função em Python que calcula o fatorial de um número inteiro positivo através de recursividade.
Faça um programa principal para testar a função

Passo 1

Beleza, vamos resolver esse exercício juntos! A gente precisa criar uma função em Python que calcula o fatorial de um número inteiro positivo usando recursividade. Além disso, vamos fazer um programa principal para testar essa função. Aqui, o conteúdo principal é recursividade e fatorial, que são conceitos básicos de programação e matemática.

Passo 2

Primeiro, vamos entender o que é fatorial. O fatorial de um número inteiro positivo n, representado por n!, é o produto de todos os números inteiros de 1 até n. Por exemplo, 5! = 5 × 4 × 3 × 2 × 1 = 120.

Passo 3

Agora, vamos falar sobre recursividade. Recursividade é quando uma função chama a si mesma para resolver subproblemas menores do mesmo tipo. Para usar recursividade no cálculo do fatorial, precisamos definir duas coisas:
  1. Caso base: a condição que vai parar a recursão. No caso do fatorial, o caso base é quando n é 0 ou 1, porque 0! = 1! = 1.
  2. Chamada recursiva: a parte da função que chama a si mesma com um valor menor. Aqui, vamos chamar a função para calcular (n-1)!.

Passo 4

Vamos escrever a função em Python:
def fatorial(n):
    if n == 0 or n == 1:
        return 1
    else:
        return n * fatorial(n - 1)
Explicação:
  • Linha 1: Definimos a função fatorial que recebe um número n.
  • Linha 2: Verificamos se n é 0 ou 1. Se for, retornamos 1, que é o caso base.
  • Linha 4: Se n não for 0 ou 1, retornamos n multiplicado pelo fatorial de n - 1. Aqui acontece a chamada recursiva.

Passo 5

Agora, vamos criar o programa principal para testar nossa função. Vamos pedir para o usuário inserir um número e depois calcular o fatorial desse número usando a função que criamos.
def main():
    try:
        numero = int(input("Digite um número inteiro positivo para calcular o fatorial: "))
        if numero < 0:
            print("Por favor, digite um número inteiro positivo.")
        else:
            resultado = fatorial(numero)
            print(f"O fatorial de {numero} é {resultado}.")
    except ValueError:
        print("Entrada inválida! Por favor, digite um número inteiro.")

if __name__ == "__main__":
    main()
Explicação:
  • Linha 1: Definimos a função main que vai ser o nosso programa principal.
  • Linha 2: Usamos try para tentar executar o bloco de código e capturar possíveis erros.
  • Linha 3: Pedimos para o usuário digitar um número inteiro positivo.
  • Linha 4-5: Verificamos se o número é negativo. Se for, mostramos uma mensagem pedindo um número positivo.
  • Linha 7: Se o número for válido, chamamos a função fatorial e armazenamos o resultado.
  • Linha 8: Exibimos o resultado para o usuário.
  • Linha 9-10: Se o usuário digitar algo que não seja um número inteiro, mostramos uma mensagem de erro.
  • Linha 12-13: Garantimos que o programa principal seja executado apenas quando o script for rodado diretamente.

Resposta

Aqui está o código completo que calcula o fatorial de um número inteiro positivo usando recursividade e testa a função:
def fatorial(n):
    if n == 0 or n == 1:
        return 1
    else:
        return n * fatorial(n - 1)

def main():
    try:
        numero = int(input("Digite um número inteiro positivo para calcular o fatorial: "))
        if numero < 0:
            print("Por favor, digite um número inteiro positivo.")
        else:
            resultado = fatorial(numero)
            print(f"O fatorial de {numero} é {resultado}.")
    except ValueError:
        print("Entrada inválida! Por favor, digite um número inteiro.")

if __name__ == "__main__":
    main()
Exemplo de execução:
Digite um número inteiro positivo para calcular o fatorial: 5
O fatorial de 5 é 120.

Exercícios relacionados