{"id":22,"date":"2005-05-07T12:59:51","date_gmt":"2005-05-07T17:59:51","guid":{"rendered":"http:\/\/www.latindevelopers.com\/ivancp\/2005\/05\/fibonacci-y-el-codigo-davinci\/"},"modified":"2005-05-07T12:59:51","modified_gmt":"2005-05-07T17:59:51","slug":"fibonacci-codigo-davinci","status":"publish","type":"post","link":"https:\/\/www.latindevelopers.com\/ivancp\/2005\/05\/fibonacci-codigo-davinci\/","title":{"rendered":"Fibonacci y el C\u00f3digo Davinci"},"content":{"rendered":"<p><img hspace=10 vspace=10  align=right  width=100  height=153  src=\"http:\/\/www.aciprensa.com\/controversias\/images\/davinci.jpg\" alt=\"El codigo Da Vinci\" \/>Para quienes estamos relacionados con la Programaci\u00f3n y las Ciencias de la Computaci\u00f3n, alguna vez nos hemos que tenido que topar opn  la serie de Fibonacci, ya sea para programarla o para estudiar su comportamiento. Cada n\u00famero de esta famosa serie se obtiene de la suma de los dos anteriores.<\/p>\n<p>La serie de Fibonacci tiene muchas <a href=\"http:\/\/es.wikipedia.org\/wiki\/N%C3%BAmeros_de_Fibonacci\">aplicaciones<\/a>, no solo en la computaci\u00f3n sino tambi\u00e9n en ciencias que en las cuales las matematicas aparentemente no tienen mucho que ver.<\/p>\n<p>Me tomo por sorpresa leer acerca de &eacute;sta (y otras cosas mas) en el libro: El c\u00f3digo da Vinci de Dan Brown, por que es utilizada para encriptar un mensaje. No solo se trata de la serie de Fibonacci sino tambi\u00e9n del numero Phi = 1.618 llamado tambi\u00e9n la divina proporci\u00f3n. Algunas cuestiones matematicas estan muy relacionadas con la naturaleza las cuales se debe tener en cuenta al momento de pintar un cuadro.<\/p>\n<p>Escribir\u00e9 un post acerca de este interesante libro cuado termine de leerlo. Mientras tanto&#8230;<\/p>\n<p>Sabemos que generar estos n\u00fameros es sencillo de programar. Debido a que los valores de la serie se hacen grandes muy grandes, el reto es generar la mayor cantidad de numeros de Fibonacci. Los tipos de datos n\u00fameros en los lenguajes de programaci\u00f3n (int, double, float) tienen sus l\u00edmites y el asunto es romper esos l\u00edmites.<\/p>\n<p>El siguiente es un programa es la forma recursiva de obtener el numero N de la serie de Fibonacci:<\/p>\n<pre style=\"line-height:normal\">\nunsigned long Fibonacci(unsigned int n)\n{\n    if ((n == 0) || (n == 1))\n\t{\n        return 1;\n\t}\n\telse\n\t{\n        return (Fibonacci(n -1 ) + Fibonacci(n - 2));\n    }\n}\n<\/pre>\n<p>Puede que el programa sea da\u00f1ino para la salud del Sistema Operativo, por ello tambi\u00e9n les escrib\u00ed una versi\u00f3n no recursiva.<\/p>\n<pre style=\"line-height:normal\">\nunsigned long Fibonacci(unsigned int n)\n{\n    if ((n == 0) || (n == 1))\n\t{\n        return 1;\n\t}\n\n\tunsigned long last = 1;\n\tunsigned long curr = 1;\n\tunsigned long tmp  = 0;\n\n\twhile(n > 2)\n\t{\n\t\ttmp = curr;\n\t\tcurr = curr + last;\n\t\tlast = tmp;\n\t\tn--;\n\t}\n\treturn curr;\n}\n<\/pre>\n<p>Con la primera funci\u00f3n el calculo del numero 30 de Fibonacci demorar\u00e1 a l rededor de 5 segundos, para el numero 40 demorar\u00e1 unos minutos dependiendo del procesador que tengan. Si utilizan una <a href=\"http:\/\/en.wikipedia.org\/wiki\/Cray\">cray<\/a> esto suceder\u00e1 un unos cuantos milisegundos. Hay quienes dicen que una cray se sale de un bucle infinito en 6 segundos.<\/p>\n<p>Con el segundo programa logr\u00e9 calcular el numero 47 (2971215073), a partir del numero 48 empieza el <a href=\"http:\/\/es.wikipedia.org\/wiki\/Desbordamiento\">desbordamiento<\/a>.  Existen otras formas de obtener el esto de n\u00fameros.<\/p>\n<p>El programa para probar cualquiera de las dos formas es:<\/p>\n<pre style=\"line-height:normal\">\nint main(int argc, char* argv[])\n{\n\tif(argc &lt;= 1)\n\t{\n\t\tcout&lt;&lt;\"Modo de uso :\"&lt;&lt;endl;\n\t\tcout&lt;&lt;\"\\t\"&lt;&lt;argv[0]&lt;&lt;\" N \"&lt;&lt;endl&lt;&lt;endl;\n\t\treturn 1;\n\t}\n\tcout&lt;&lt;Fibonacci(atoi(argv[1]));\n\tcout&lt;&lt;endl;\n\treturn 0;\n}\n<\/pre>\n<p>Si tienen problemas para compilar no olviden agregar el par\u00e1metro \u2013lstdc++ al gcc (linux)<\/p>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-icon-text sd-sharing\"><h3 class=\"sd-title\">Compartelo:<\/h3><div class=\"sd-content\"><ul><li class=\"share-facebook\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-facebook-22\" class=\"share-facebook sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2005\/05\/fibonacci-codigo-davinci\/?share=facebook\" target=\"_blank\" title=\"Haz clic para compartir en Facebook\"><span>Facebook<\/span><\/a><\/li><li class=\"share-twitter\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-twitter-22\" class=\"share-twitter sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2005\/05\/fibonacci-codigo-davinci\/?share=twitter\" target=\"_blank\" title=\"Haz clic para compartir en Twitter\"><span>Twitter<\/span><\/a><\/li><li><a href=\"#\" class=\"sharing-anchor sd-button share-more\"><span>M\u00e1s<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><div class=\"sharing-hidden\"><div class=\"inner\" style=\"display: none;\"><ul><li class=\"share-email\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-email sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2005\/05\/fibonacci-codigo-davinci\/?share=email\" target=\"_blank\" title=\"Haz clic para enviar por correo electr\u00f3nico a un amigo\"><span>Correo electr\u00f3nico<\/span><\/a><\/li><li class=\"share-print\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-print sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2005\/05\/fibonacci-codigo-davinci\/\" target=\"_blank\" title=\"Haz clic para imprimir\"><span>Imprimir<\/span><\/a><\/li><li class=\"share-end\"><\/li><li class=\"share-linkedin\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-linkedin-22\" class=\"share-linkedin sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2005\/05\/fibonacci-codigo-davinci\/?share=linkedin\" target=\"_blank\" title=\"Haz clic para compartir en LinkedIn\"><span>LinkedIn<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><\/div><\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Para quienes estamos relacionados con la Programaci\u00f3n y las Ciencias de la Computaci\u00f3n, alguna vez nos hemos que tenido que topar opn la serie de Fibonacci, ya sea para programarla o para estudiar su comportamiento. Cada n\u00famero de esta famosa &hellip; <a href=\"https:\/\/www.latindevelopers.com\/ivancp\/2005\/05\/fibonacci-codigo-davinci\/\">Sigue leyendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-icon-text sd-sharing\"><h3 class=\"sd-title\">Compartelo:<\/h3><div class=\"sd-content\"><ul><li class=\"share-facebook\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-facebook-22\" class=\"share-facebook sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2005\/05\/fibonacci-codigo-davinci\/?share=facebook\" target=\"_blank\" title=\"Haz clic para compartir en Facebook\"><span>Facebook<\/span><\/a><\/li><li class=\"share-twitter\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-twitter-22\" class=\"share-twitter sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2005\/05\/fibonacci-codigo-davinci\/?share=twitter\" target=\"_blank\" title=\"Haz clic para compartir en Twitter\"><span>Twitter<\/span><\/a><\/li><li><a href=\"#\" class=\"sharing-anchor sd-button share-more\"><span>M\u00e1s<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><div class=\"sharing-hidden\"><div class=\"inner\" style=\"display: none;\"><ul><li class=\"share-email\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-email sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2005\/05\/fibonacci-codigo-davinci\/?share=email\" target=\"_blank\" title=\"Haz clic para enviar por correo electr\u00f3nico a un amigo\"><span>Correo electr\u00f3nico<\/span><\/a><\/li><li class=\"share-print\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-print sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2005\/05\/fibonacci-codigo-davinci\/\" target=\"_blank\" title=\"Haz clic para imprimir\"><span>Imprimir<\/span><\/a><\/li><li class=\"share-end\"><\/li><li class=\"share-linkedin\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-linkedin-22\" class=\"share-linkedin sd-button share-icon\" href=\"https:\/\/www.latindevelopers.com\/ivancp\/2005\/05\/fibonacci-codigo-davinci\/?share=linkedin\" target=\"_blank\" title=\"Haz clic para compartir en LinkedIn\"><span>LinkedIn<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><\/div><\/div><\/div><\/div><\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":""},"categories":[10],"tags":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p1tEO5-m","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/posts\/22"}],"collection":[{"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/comments?post=22"}],"version-history":[{"count":0,"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/posts\/22\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/media?parent=22"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/categories?post=22"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.latindevelopers.com\/ivancp\/wp-json\/wp\/v2\/tags?post=22"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}