Um programa foi confeccionado na linguagem C, conforme abai...
Um programa foi confeccionado na linguagem C, conforme abaixo:
#include <stdio.h>
#include <stdlib.h>
long int funcao (int n)
{ if(n==1)
return n;
return funcao(n-1) * n; }
int main ()
{ long int x;
scanf ("%d", &x);
printf ( " %d \n", funcao (x));
return (0);}
Caso seja passado como entrada o valor de x=5, o resultado apresentado será:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: C - 120.
A questão pede para analisarmos o código de um programa escrito em linguagem C que implementa uma função recursiva. O tema central da questão é o entendimento de como funciona a recursividade, que é um conceito fundamental em programação, no qual uma função chama a si mesma para resolver um problema.
A função em questão parece calcular o fatorial de um número inteiro n. O fatorial de um número n, representado por n!, é o produto de todos os inteiros positivos menores ou iguais a n. A definição recursiva do fatorial é:
- Base da recursão: 1! = 1
- Passo recursivo: n! = n * (n - 1)! para n > 1
O programa lê um valor inteiro para a variável x e invoca a função funcao passando x como argumento. A função funcao verifica se n é igual a 1 e, se for, retorna 1. Caso contrário, a função chama a si mesma com n - 1 e multiplica o resultado por n, o que é exatamente o cálculo de fatorial segundo a definição recursiva.
Para o valor de entrada x = 5, a sequência de chamadas recursivas será:
funcao(5) 5 * funcao(4) 5 * (4 * funcao(3)) 5 * (4 * (3 * funcao(2))) 5 * (4 * (3 * (2 * funcao(1)))) 5 * (4 * (3 * (2 * 1)))
Calculando as multiplicações, obtemos:
5 * 4 * 3 * 2 * 1 = 120
Portanto, o resultado da função quando x é 5 será 120, que é o fatorial de 5. Por isso, a alternativa C é a correta.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Gabarito C
5!
A função chamada usa de recursividade para calcular a fatorial do número
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo