Máximo divisor comum recursivo. O máximo divisor comum dos inteiros x e y é o maior inteiro que divide x e y sem gerar resto. Escreva uma função recursiva mdc que retorne o máximo divisor comum de x e y. O mdc de x e y é definido recursivamente da seguinte forma: se y é igual a 0, então mdc(x, y) é x; caso contrário, mdc(x, y) é mdc(y, x % y), onde % é o operador de módulo (ou resto da divisão).

Passo 1

Fala Galera!!! Bora para mais um exercício.

Vamos criar uma função que calcula o Máximo divisor comum de forma recursiva. Nosso programa irá pedir para o usuário inserir os dois números e chamar a função mdc para realizar o cálculo.

O enunciado do exercício já nos diz como a função terá que funcionar. A função irá receber y e x, se y é igual a 0, então mdc(x, y) é x; caso contrário, mdc(x, y) é mdc(y, x % y), onde % é o operador de módulo (ou resto da divisão).

Passo 2

A função mdc ficará da seguinte forma:

/* gcd encontra recursivamente o maior divisor comum de xMatch e yMatch */

unsigned int mcd( unsigned int xMatch, unsigned int yMatch ){

/* base case */

if ( yMatch == 0 ) {

return xMatch;

} /* fim do if */

else { /* recursive step */

return mcd( yMatch, xMatch % yMatch );

} /* fim do else */

}/* fim da função mdc */

Passo 3

Finalizada a função, vamos chamar ela dentro do main() e pedir para que o usuário insira os dois número inteiro. Ficando da seguinte forma:

#include

unsigned int mcd( unsigned int xMatch, unsigned int yMatch );

int main(){

unsigned int x; /* primeiro número inteiro */

unsigned int y; /* segundo inteiro */

unsigned int mdcDiv; /* maior divisor comum de x e y */

printf( " Insira o dois inteiro: " );

scanf( "%u%u", &x, &y );

mdcDiv = mcd( x, y );

printf( "O maximo divisor comun para %u e %u e %u\n", x, y, mdcDiv );

return 0;

}

Agora só juntar tudo e o nosso programa estará pronto.

Por hoje é só galera!!! Até o próximo exercício.

Resposta

O programa final será: