[Python-es] Duda con función M.c.d.

Elio Rincón e1987ebrb en gmail.com
Mar Dic 18 12:33:34 CET 2012


Lo envié sin querer, disculpen.

Aquí te dejo un ejemplo:

MCD(36, 48) > def Mcd(a,b): return b and Mcd(b, a % b) or a

A B          Condición MCD(B, A%B)
36 48          se cumple MCD(48, 36%48)
48 (36%48)=36          se cumple MCD(36, 48%36)
36 (48%36)=12  se cumple MCD(12, 36%12)
12 (36%12)=0                  no se cumple retorna A=12



El 18 de diciembre de 2012 07:01, Elio Rincón <e1987ebrb en gmail.com>escribió:

> Tienes que llevar la ejecución del programa paso a paso en cada iteración,
> crear un modelo o algo que te permita ver la logica y ejecución de una
> forma en la que puedas entenderlo mejor.
>
> Aquí te dejo un ejemplo:
>
> MCD(36, 48) > def Mcd(a,b): return b and Mcd(b, a % b) or a
>
> A B Condición MCD(B, A%B)
> 36 48 se cumple MCD(48, 36%48)
> 48 (36%48)=36 se cumple MCD(36, 48%36)
> 36 (48%36)=12 se cumple MCD(12, 36%12)
> 12 (36%12)=0 no se cumple retorna A=12
>
>
>
>
> El 18 de diciembre de 2012 05:51, Carlos Agulló Calvo <cm.agullo en gmail.com
> > escribió:
>
> Acabo de ver que es % no / así que sería 12, perdonad.
>> pero si intento hacer MCD(36,48) sí que no lo veo
>>
>>
>>
>> El 18 de diciembre de 2012 11:19, Carlos Agulló Calvo <
>> cm.agullo en gmail.com> escribió:
>>
>> Disculpad, pero sigo sin entenderlo.
>>> Si pongo MCD(48,36) sería:
>>> 36 and MCD(36,1) or 48 que como MCD(36,1) es distinto de cero la
>>> respuesta sería MCD(36,1)
>>> Entonces pasaríamos a evaluar MCD(36,1) que sería:
>>> 1 and MCD(1,36) or 36 si MCD fuera cero, la respuesta sería 36, si no
>>> sería MCD(1,36)
>>> Ahora, MCD (1,36) sería:
>>> 36 and MCD(36,0) or 1
>>>
>>> Según mi razonamiento nunca llegaría a 12, que es la solución que
>>> debería dar, por lo que mi razonamiento falla, pero no veo dónde.
>>>
>>> Gracias
>>>
>>>
>>>
>>>
>>> El 18 de diciembre de 2012 03:09, xiao xiong mao panda rojo <
>>> ailurus.fulgens en hotmail.com> escribió:
>>>
>>>
>>>> wau no sabia que se podía usar AND y OR de ese modo
>>>> dicen k iterar es humano y la recursividad divina
>>>> nunca entendí bien como usarla
>>>> creo k debo comenzar XD
>>>> ------------------------------
>>>> From: cm.agullo en gmail.com
>>>> Date: Mon, 17 Dec 2012 18:13:00 +0100
>>>> To: python-es en python.org
>>>> Subject: [Python-es] Duda con función M.c.d.
>>>>
>>>>
>>>> Buenas tardes,
>>>>
>>>> practicando un poco python en la página de projecteuler he visto la
>>>> siguiente función:
>>>>
>>>> def Mcd(a,b): return b and Mcd(b, a % b) or a
>>>>
>>>> pero no entiendo cómo funciona, ¿alguien podría explicármelo?
>>>> Muchas gracias por adelantado
>>>>
>>>> _______________________________________________ Python-es mailing list
>>>> Python-es en python.org http://mail.python.org/mailman/listinfo/python-esFAQ:
>>>> http://python-es-faq.wikidot.com/
>>>>
>>>> _______________________________________________
>>>> Python-es mailing list
>>>> Python-es en python.org
>>>> http://mail.python.org/mailman/listinfo/python-es
>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>
>>>>
>>>
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> http://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20121218/db9a3cad/attachment.html>


Más información sobre la lista de distribución Python-es