Exercício Resolvido a Funções em Python
a. Implemente uma função não recursiva chamada fat_n(n) que recebe como parâmetro um número natural n (n≥0 ) e retorna o fatorial de n. Por exemplo, a função irá retornar: 1 se n==0;1 se n==1; 2 se n==2; 6 se n==3; 24 se n==4 e assim por diante.
Nesta questão, queremos construir a função fat_n(n), que recebe um número inteiro positivo n e devolve n! . Além disso, queremos que esta função seja não recursiva.
Para criar esta função, basicamente precisaremos criar uma variável para ser multiplicada por todos os números inteiros de 1 até n. Então, ao fim, esta variável deve ser retornada.
Para isso, a primeira coisa que precisamos é declarar a função fat_n().
Esta função recebe somente um argumento: n.
def fat_n(n):
Agora, precisaremos criar uma variável que armazene o valor que será no final retornado. Vamos chamar esta variável de fat.
Precisamos atribuir um valor neutro para esta variável, pois ela será multiplicada por todos os inteiros de 1 até n. Como 1 é o elemento neutro da multiplicação, o valor inicial a ser atribuido para esta variável deve ser 1.
fat = 1
A próxima etapa é definir uma variável contadora cont. A utilidade desta variável será percorrer os números de 1 até n.
Com isso, precisaremos multiplicar cont por fat a cada vez que cont for alterado. Como o primeiro valor que precisa ser multiplicado é 1, a variável cont precisará ter como valor inicial 1.
cont = 1
Agora, precisaremos de um laço para fazer com que a variável cont percorra todos os valores inteiros de 1 até n. Para isso, é interessante criarmos um while que é finalizado somente quando cont ultrapassar n.
Para conseguirmos este efeito com o nosso laço, precisaremos multiplicar fat por cont e aumentar cont em 1 unidade em cada iteração do laço.
Note que o valor de n também será incluso, pois também precisaremos multiplicar fat por n.
while cont <= n:
fat *= cont #isso é o mesmo que fat = fat * cont
cont += 1 #isso é o mesmo que cont = cont + 1
Depois deste laço, observe que fat foi multiplicado por todos os valores inteiros de 1 até n. Além disso, se n valer 0, o valor de fat será 1, que é o valor de 0!.
Portanto, a última coisa que nos resta é retornar o valor de fat.
return(fat)
Temos agora nosso programa completo.
Resposta esperada:
def fat_n(n):
fat = 1
cont = 1
while cont <= n:
fat *= cont #isso é o mesmo que fat = fat * cont
cont += 1 #isso é o mesmo que cont = cont + 1
return(fat)