Fala galera, beleza??? To batendo cabeça aqui e decidi pedir uma ajuda para vocês!! É o seguinte, to desenvolvendo um programa que receberá 2 números do usuário e terá que identificar o MDC (Máximo Dividor Comum) desses 2 números. No entanto, tenho que fazer isso utilizando recursão. Eu já saquei que terei que utilizar potência para descobrir, ou seja o MDC de 40 e 20 eh 2³ * 5¹ = 8 * 5 = 40.
Mas não consigo encaixar isso em recursão!!! Conto com a ajuda de vocês, obrigado!!!
[code]int mdc(int a, int b) {
if (a%b == 0) return b;
return mdc(b, a%b);
}[/code]
Legal galera!! Vou pensarna lógica do cálculo!! Muito obrigado!!
É simples:
O operador ‘%’ retorna o resto de uma divisão. Ex: 10%5 retorna 0, 10%3 retorna 1.
Ou seja, se a%b for igual a 0 significa que b divide a portanto é o M.D.C. A chamada recursiva vai retornando com o resto e b até encontrar o valor onde a%b é igual a 0.
Recursão é um recurso muito poderoso! Ele pode ser muito custoso, tanto em memória quanto em processamento, mas ai faz parte da vida, quando vc se depara com estes problemas vc provavelmente vai estudar sobre algoritmos, sobre como transformar uma recursão em iteração, etc.
Uma dica: pegue todos os exercícios que vc ja fez usando laços de repetição e escreva programas recursivos. Imagine que vc não tem while nem for. Depois de uns 20 ou 50 a coisa se desvenda pra vc.
Depois é hora de comparar coisas como: calculo de fatorial e fibonacci via recursão e via iteração…
Legal galera!!! Muito brigado pela ajuda, procurarei fazer os exercícios conforme você sugeriu!! Abraços!!