Ajuda com Recursão

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!!!

Bem acho que aqui tem sua resposta

http://www.unicamp.br/~hans/mc102/java/book/algoritmos.pdf

Abraços t+

[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… :wink:

Legal galera!!! Muito brigado pela ajuda, procurarei fazer os exercícios conforme você sugeriu!! Abraços!!