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