Enunciado

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 :)