{"id":8379,"date":"2015-06-17T09:25:16","date_gmt":"2015-06-17T14:25:16","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/ccpg1001\/?p=8379"},"modified":"2026-04-05T15:47:14","modified_gmt":"2026-04-05T20:47:14","slug":"funciones-recursivas","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-unidades\/fp-u05\/funciones-recursivas\/","title":{"rendered":"5.3 Funciones Recursivas"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#recursiva\">Funci\u00f3n recursiva<\/a><\/p>\n\n\n\n<p><a href=\"#observaciones\">Observaciones<\/a><\/p>\n\n\n\n<p><a href=\"#ejemplos\">Ejemplos<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"recursiva\">1. Funci\u00f3n recursiva<\/h2>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: Rodr\u00edguez 6.0 p168<\/p>\n\n\n\n<p>Una funci\u00f3n recursiva muy conocida y definida en la matem\u00e1tica es el factorial. El factorial tiene la caracter\u00edstica que <em><strong>se puede llamar a si misma<\/strong><\/em>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>5! = 5x4<strong>!<\/strong>\n       4! = 4x3<strong>!<\/strong>\n              3! = 3x2<strong>!<\/strong>\n                     2! = 2x1<strong>!<\/strong>\n           por definici\u00f3n   1! = 1<\/code><\/pre>\n\n\n\n<p>Se interpreta que para encontrar 5! requerimos la respuesta de 4!.<br>Para encontrar 4! se debe calcular 3! y as\u00ed sucesivamente,<br>hasta llegar al valor inicial de la funci\u00f3n que es 1!=1<\/p>\n\n\n\n<p>La soluci\u00f3n se interpreta&nbsp; hacia atr\u00e1s,&nbsp; empezando desde la respuesta conocida de 1! =1 y reemplazando los valores en las operaciones que esperaban por resolver:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>5! = 5x4<strong>!<\/strong> = 5x24 = <strong>120<\/strong>\n       4! = 4x3<strong>!<\/strong> = 4x6 = <strong>24<\/strong>\n              3! = 3x2<strong>!<\/strong> = 3x2 = <strong>6<\/strong>\n                     2! = 2x1<strong>!<\/strong> = 2x1 =<strong>2<\/strong>\n           por definici\u00f3n   1! = 1<\/code><\/pre>\n\n\n\n<p>Observamos que la funci\u00f3n recursiva tiene: valores iniciales, que se llama a si misma, y de forma matem\u00e1tica tiene una forma elegante de escribirse:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> n! = \\begin{cases} 1 &amp;&amp; n=1 \\\\ n(n-1)! &amp;&amp; n &gt; 1\\end{cases}<\/span>\n\n\n\n<p>Escribir la funci\u00f3n recursiva en un algoritmo consiste en transcribir paso a paso lo descrito en forma matem\u00e1tica.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# factorial en forma recursiva\n\ndef factorial(n):\n    if n==1:\n        resultado = 1\n    if n&gt;1:\n        resultado = n*factorial(n-1)\n    return(resultado)\n\n<\/pre><\/div>\n\n\n<p>una vez que se ejecuta el algoritmo para que est\u00e9 disponible en memoria, se usa llamando a la funci\u00f3n<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt;&gt;&gt; factorial(5)\n120\n&gt;&gt;&gt; factorial(1)\n1\n&gt;&gt;&gt; factorial(4)\n24\n&gt;&gt;&gt; <\/code><\/pre>\n\n\n\n<p>Existen otras funciones recursivas en matem\u00e1ticas que se pueden f\u00e1cilmente convertir a algoritmos como Fibonacci, Padovan,&nbsp; incluso algunas que funcionan en parejas como Par e impar. Se muestran algunas en la secci\u00f3n de ejemplos.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#recursiva\">Funci\u00f3n recursiva<\/a><\/p>\n\n\n\n<p><a href=\"#observaciones\">Observaciones<\/a><\/p>\n\n\n\n<p><a href=\"#ejemplos\">Ejemplos<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">2. Observaciones de uso<\/h2>\n\n\n\n<p>Sin embargo, hay que considerar que la recursividad se usa con precauci\u00f3n, pues las llamadas generan otra instancia que puede saturar la capacidad del computador.<\/p>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"346\" height=\"316\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2015\/06\/RecursividadMatrioshka01.png\" alt=\"Recursividad Matrioshka 01\" class=\"wp-image-16105\" \/><figcaption class=\"wp-element-caption\">Matrioshka. Mu\u00f1eca tradicional rusa, hueca con m\u00e1s mu\u00f1ecas en su interior.<\/figcaption><\/figure>\n\n\n\n<p>En el ejemplo se observa que se tienen operaciones en espera de resultados de la siguiente respuesta, cada llamada usa memoria, tiempo de c\u00f3mputo como recursos.<\/p>\n\n\n\n<p>Por ejemplo, al intentar de obtener <strong><em>factorial<\/em><\/strong>(1000) en forma recursiva, se obtiene un error <code>\"RecursionError: maximum recursion depth exceeded in comparison\"<\/code>.<\/p>\n\n\n\n<p>Los lenguajes de programaci\u00f3n tienen como l\u00edmite m\u00e1ximo de llamadas recursivas, para evitar saturar los recursos disponibles de memoria y tiempo computacional.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Funciones Recursivas con Python. Ejercicio Factorial y campesino egipcio.\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/s-aCcfqdUUQ?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#recursiva\">Funci\u00f3n recursiva<\/a><\/p>\n\n\n\n<p><a href=\"#observaciones\">Observaciones<\/a><\/p>\n\n\n\n<p><a href=\"#ejemplos\">Ejemplos<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ejemplos\">3. Ejemplos<\/h2>\n\n\n\n<p><a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-2eva10\/2eva2007tii_t4-fibonacci-recursiva\/\" data-type=\"post\" data-id=\"2914\">2Eva2007TII_T4 Fibonacci recursiva<\/a><\/p>\n\n\n\n<p><em>Soluci\u00f3n propuesta:<\/em> <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-s2eva10\/s2eva2007tii_t4-fibonacci-recursiva\/\" data-type=\"post\" data-id=\"1310\"><strong>s<\/strong>2Eva2007TII_T4 Fibonacci recursiva<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-2eva10\/2eva2007ti_t1-funciones-par-e-impar-recursivas\/\" data-type=\"post\" data-id=\"2900\">2Eva2007TI_T1 Funciones par e impar recursivas<\/a><\/p>\n\n\n\n<p><em>Soluci\u00f3n Propuesta:<\/em> <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-s2eva10\/s2eva2007ti_t1-funciones-par-e-impar-recursivas\/\" data-type=\"post\" data-id=\"1312\"><strong>s<\/strong>2Eva2007TI_T1 Funciones par e impar recursivas<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-3eva10\/3eva2004ti_t3-multiplicar-con-campesino-egipcio\/\" data-type=\"post\" data-id=\"2516\">3Eva2004TI_T3 Multiplicar con campesino egipcio<\/a><\/p>\n\n\n\n<p><em>Soluci\u00f3n Propuesta:<\/em> <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-s3eva10\/s3eva2004ti_t3-multiplicar-con-campesino-egipcio\/\" data-type=\"post\" data-id=\"1314\"><strong>s<\/strong>3Eva2004TI_T3 Multiplicar con campesino egipcio<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Ejercicios<\/h2>\n\n\n\n<p><a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-2eva10\/2eva2005ti_t2-calcular-potencia-recursiva\/\" data-type=\"post\" data-id=\"2887\">2Eva2005TI_T2 Calcular potencia recursiva<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-2eva20\/2eva2012tii_t1-recursiva-multi\/\" data-type=\"post\" data-id=\"2991\">2Eva2012TII_T1 Recursiva Multi<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#recursiva\">Funci\u00f3n recursiva<\/a><\/p>\n\n\n\n<p><a href=\"#observaciones\">Observaciones<\/a><\/p>\n\n\n\n<p><a href=\"#ejemplos\">Ejemplos<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>Funci\u00f3n recursiva Observaciones Ejemplos 1. Funci\u00f3n recursiva Referencia: Rodr\u00edguez 6.0 p168 Una funci\u00f3n recursiva muy conocida y definida en la matem\u00e1tica es el factorial. El factorial tiene la caracter\u00edstica que se puede llamar a si misma. Se interpreta que para encontrar 5! requerimos la respuesta de 4!.Para encontrar 4! se debe calcular 3! y as\u00ed [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-fp-unidades","format":"standard","meta":{"footnotes":""},"categories":[106],"tags":[],"class_list":["post-8379","post","type-post","status-publish","format-standard","hentry","category-fp-u05"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/8379","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/comments?post=8379"}],"version-history":[{"count":5,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/8379\/revisions"}],"predecessor-version":[{"id":23473,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/8379\/revisions\/23473"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=8379"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=8379"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=8379"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}