Ooootro post sobre recursividad, pero no se preocupen ya solo queda este y otro. Esta vez vamos a calcular el máximo común divisor de dos números de forma recursiva en c++.
#include<stdio.h> int MCD(int x, int y) { if(y==0) return x; else return MCD(y, x%y); } int main() { int num1=0,num2=0; printf("::MAXIMO COMUN DIVISOR::\n"); printf("Introduce el primer numero: ");scanf("%i",&num1); printf("Introduce el segundo numero: ");scanf("%i",&num2); printf("\tEl resultado es: %i\n", MCD(num1, num2)); return 0; }
Este es uno de esos algoritmos recursivos raros o, mejor dicho, difÃciles de comprender, mi cerebro estuvo un buen rato echando humo tratando de comprender la lógica con que lo armaron y mi conclusión es que funciona de pura rana. Bueno, al final si supe como funciona pero no porque.
Amigo este algoritmo esta escrito en Lenguaje C no C++.
este algoritmo funciona perfecto en c++
Ese codigo es c y en c++ es el siguiente:
#include
using namespace std;
int MCD(int x, int y)
{
if(y==0)
return x;
else
return MCD(y, x%y);
}
int main()
{
int a=0,b=0;
cout<>a;
cout<<"\n";
cout<>b;
cout<<"\n";
cout<<"El resultado es:"<< MCD(a, b)<<"\n";
return 0;
}
mmmm nose pk no salio bn lo ke pegue :S
int a=0,b=0;
cout<>a;
cout<<"\n";
cout<>b;
cout<<"\n";
cout<<"El resultado es:"<< MCD(a, b)<<"\n";
return 0;
Me podrÃas explicar tu razonamiento? gracias.
Es el algoritmo de uclides : el MCD de dos números también divide al resto obtenido de dividir el mayor entre el más pequeño. lol esta en wiki
divide y venceras
Falta poner
if(num1<num2){
aux=num1;
num1=num2;
num2=aux;
}
antes de la llamada a la funcion para ordenar los numeros de mayor a menor
el cartero siempre llama 2 veces
Este algoritmo fue diseñado por el matemático griego Euclides, mejor conocido como “El padre de la GeometrÃa”. Aplica eficazmente el concepto de recursividad. Para entenderlo mejor se puede hace una prueba de escritorio, veamos:
MCD(11, 3) = 1
x y
11 3
3 11-3*3
2 3-2
1 0
Como y==0 entonces la respuesta es 1. Claro 1 es el máximo común divisor entre los números primos 11 y 3.
En realidad el codigo no funciona por pura “rana”..
Lo estuve analizando, y si se realiza la prueba de escritorio cumple
con las espectativas dadas…
Aunque admito que esta muy ingenioso por parte del creador…
Hola….le capto el codigo, pero si coloca al primer valor 5 y al segundo 20…porque cumple la parte de 5%20….esto aun no lo entiendo?
por que 5%20 = 0 ,entonces queda 5 0 y queda finalmente 5 (MCD).
como sucede aqui http://codepad.org/1tW4QxG9