Enunciado
Programação - Deitel &Deitel - Como programar em C- Ed: 6º - Capítulo 5.Exercícios - Ex. 43
O que o programa a seguir faz?
Passo 1
Fala Galera!!! Tudo certo? Espero que sim!!! Bora para mais um exercício.
Bora analisar o que está acontecendo no programa do exercício. Olhando rapidamente o programa, é possível perceber que a almo do código está na função mystery, então vamos começar analisando-a.
/* Parâmetro b deve ser um inteiro positivo, para impedir recursão infinita */
int mystery( int a, int b ){
/* caso básico */
if ( b == 1 ){
return a;
}/* fim do if */
else { /* etapa recursiva */
return a + mystery( a, b - 1 );
} /* fim do else */
} /* fim da função mystery */
A função mystery recebe como parâmetros dois inteiros, int a e int b, em seguida tem uma condição caso o valor de b seja igual a 1, se for retornará o valor de a, caso contrário retorna uma recursão da função, retornando a + mystery (a, b -1). Podemos concluir que a função imita uma multiplicação ao somar a, b vezes. Sabemos que a multiplicação de um número a por b, é soma de a, b vezes, ou seja, 3 x 2 = 3 + 3 = 6.
Passo 2
#include
int mystery( int a, int b ); /* protótipo de função */
int main( void ){
int x; /* primeiro inteiro */
int y; /* primeiro inteiro */
printf( "Digite dois inteiros: " );
scanf( "%d%d", &x, &y );
printf( "O resultado é %d\n", mystery( x, y ) );
return 0; /* indica conclusão bem--sucedida */
}
Agora analisando dentro da função main(), é pedido para que o usuário insira dois número inteiro, armazenados esses os valores em duas variável e chamada à função mystery que receberá os números como parâmetros.
Passo 3
Vamos escrever o programa no nosso compilador usando como exemplos os valores de entrada 3 e 4, e verificar qual será a saída.
A saída com o valor 12 era esperado, visto que o programa imita uma multiplicação, onde 3 x 4 = 12. E pela lógica da função mystery que retorna:
a + mystery(a, b - 1 ), onde a =3 e b =4, será : 3+3+3+3 = 12.
E assim finalizamos nosso exercício Galera!!! Até o próximo!!!
Resposta
Ei, a resposta está no passo a passo :)