Questão 1: Escreva uma função em Haskell, sem o uso direto de recursão, que receba um número e retorne o fatorial do número recebido.
Passo 1
O enunciado pede para criar uma função em Haskell que receba um número e retorne seu fatorial sem usar recursão direta. O conteúdo de matéria envolve funções de ordem superior e manipulação de listas para substituir a recursão.
Passo 2
Sabendo que o fatorial de um número
é definido como
, podemos gerar a lista de todos os números de 1 até
em Haskell usando a sintaxe de enumeração
.
Passo 3
Para efetuar a multiplicação de todos os elementos de uma lista sem recursão explícita, podemos usar a função padrão
, que calcula o produto de todos os itens de uma lista numérica.
Passo 4
Basta então definir a função de fatorial usando
sobre a lista gerada. Podemos também incluir uma assinatura de tipo para deixar claro que estamos trabalhando com
:
Resposta
fatorial :: Integer -> Integer
fatorial n = product [1…n]
fatorial n = product [1…n]