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

Elio Rincón e1987ebrb en gmail.com
Mar Dic 18 13:00:08 CET 2012


http://www.pythontutor.com/visualize.html#code=def+Mcd(a,b)%3A+return+b+and+Mcd(b,+a+%25+b)+or+a%0A%0AMcd(36,+48)&mode=display&cumulative=false&py=2&curInstr=6
Gracias por el dato, Muy bueno.


El 18 de diciembre de 2012 07:15, Marcos Sánchez Provencio <rapto en arrakis.es
> escribió:

>  Recomiendo http://www.pythontutor.com/visualize.html# para este tipo de
> enjuagues
>
> El 18/12/12 12:31, Elio Rincón 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-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/
>>>>
>>>>
>>>
>>
>> _______________________________________________
>> 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 listPython-es en python.orghttp://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/74e3b61f/attachment.html>


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