<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>recursividad &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://wordpress.com/tag/recursividad/</link>
	<description>Feed of posts on WordPress.com tagged "recursividad"</description>
	<pubDate>Sun, 27 Jul 2008 00:44:11 +0000</pubDate>

	<generator>http://wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[La práctica de la minería web y su potencial recursivo]]></title>
<link>http://jacobustamante.wordpress.com/?p=6</link>
<pubDate>Fri, 04 Jul 2008 01:49:46 +0000</pubDate>
<dc:creator>jacobustamante</dc:creator>
<guid>http://jacobustamante.wordpress.com/?p=6</guid>
<description><![CDATA[Analizando los tres pétalos de la margarita v1.1 que me restaban por conocer, pienso que la minerí]]></description>
<content:encoded><![CDATA[<p>Analizando los tres pétalos de la margarita v1.1 que me restaban por conocer, pienso que la minería web y las posibilidades de aprendizaje de nuestros usuarios y sus comportamientos, es lo que finalmente permite la recursividad del modelo, sin dicho aprendizaje no es posible redefinir las políticas editoriales.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Recursividad - Fibonacci]]></title>
<link>http://julianrdz.wordpress.com/?p=250</link>
<pubDate>Sat, 28 Jun 2008 00:24:40 +0000</pubDate>
<dc:creator>Julián Rodríguez</dc:creator>
<guid>http://julianrdz.wordpress.com/?p=250</guid>
<description><![CDATA[Los programas y codigos expuestos fueron probados antes de ser publicados.
/*
Nombre: Codigo Fibonac]]></description>
<content:encoded><![CDATA[<p><strong>Los programas y codigos expuestos fueron probados antes de ser publicados.</strong></p>
<pre>/*
Nombre: Codigo Fibonacci
Autor: Julian Rodriguez
Tema: Recursividad
Fecha: 27/Junio/2008
*/
#include &#60;iostream&#62;
using namespace std;

int fibonacci(int n); // Funcion Recursiva
int main()
{
int n, resultado; // Variables

cout &#60;&#60; "Escribe el numero de posicion: ";
cin &#62;&#62; n;

resultado = fibonacci(n);
cout &#60;&#60; endl &#60;&#60; "[+]Posicion: " &#60;&#60; n &#60;&#60; " Valor: " &#60;&#60; resultado &#60;&#60; endl;;

return EXIT_SUCCESS;
}

int fibonacci(int n)
{
cout &#60;&#60; "[-]Procesando: Fib(" &#60;&#60; n &#60;&#60; ")" &#60;&#60; endl;
if( n &#60; 3 )
{
return (1);
}
else
{
cout &#60;&#60; "Fib(" &#60;&#60; n-2 &#60;&#60; ") - " &#60;&#60; "Fib(" &#60;&#60; n-1 &#60;&#60; ")" &#60;&#60; endl;
return ( fibonacci(n-2) + fibonacci(n-1) );
}
}</pre>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Recursividad - Potencias]]></title>
<link>http://julianrdz.wordpress.com/?p=247</link>
<pubDate>Sat, 28 Jun 2008 00:22:15 +0000</pubDate>
<dc:creator>Julián Rodríguez</dc:creator>
<guid>http://julianrdz.wordpress.com/?p=247</guid>
<description><![CDATA[Los programas y codigos expuestos fueron probados antes de ser publicados.
/*
Nombre: Codigo Fibonac]]></description>
<content:encoded><![CDATA[<p><strong>Los programas y codigos expuestos fueron probados antes de ser publicados.</strong></p>
<pre>/*
Nombre: Codigo Fibonacci
Autor: Julian Rodriguez
Tema: Recursividad
Fecha: 27/Junio/2008
*/
#include &#60;iostream&#62;
using namespace std;

int funcion(int n, int p);
int main()
{
int resultado, n, p;

cout &#60;&#60; "Escribe un numero: ";
cin &#62;&#62; n;
cout &#60;&#60; "Escribe la potencia: ";
cin &#62;&#62; p;

resultado = funcion(n, p);
cout &#60;&#60; "Numero " &#60;&#60; n &#60;&#60; " elevado a la " &#60;&#60; p &#60;&#60; "; Resultado = " &#60;&#60; resultado;
cout &#60;&#60; endl;
getchar();

return EXIT_SUCCESS;
}

int funcion(int n, int p)
{
if(p == 1)
{
return n;
}
else
{
return ( n * funcion(n, p-1) );
}
}</pre>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Dibujar árboles con ActionScript y Recursividad...]]></title>
<link>http://shiftf12.wordpress.com/?p=133</link>
<pubDate>Fri, 27 Jun 2008 17:13:19 +0000</pubDate>
<dc:creator>elhector</dc:creator>
<guid>http://shiftf12.wordpress.com/?p=133</guid>
<description><![CDATA[Este post describe una técnica bella&#8230; Se me ocurren programas y experimentos en los que la ge]]></description>
<content:encoded><![CDATA[<p><a href="http://www.gskinner.com/blog/archives/2008/06/programatically.html">Este post</a> describe una técnica bella... Se me ocurren programas y experimentos en los que la gente define el número de árboles, los colores... Se puede todo ir animando mientras crece y verse muy muy padre. Lo mejor?... El post describe muy bien la técnica y es fácilmente replicable, como todo: no es tanto lo complicado de la idea, sino la genialidad de haber pensado en ella.</p>
<p style="text-align:center;"><a href="http://www.gskinner.com/blog/archives/2008/06/programatically.html"><img class="aligncenter size-medium wp-image-135" src="http://shiftf12.wordpress.com/files/2008/06/dibujo5.jpg?w=300" alt="" width="300" height="261" /></a></p>
<p style="text-align:left;">Incluye el<a href="http://www.gskinner.com/blog/assets/Recursion.zip"> código fuente</a> y una referencia al <a href="http://www.gskinner.com/blog/archives/2005/01/source_code_var.html">código fuente</a> de un experimento de "<strong><a href="http://www.gskinner.com/blog/archives/2005/01/varicoseg_exper.html">varices</a></strong>" tambien muy padre visualmente.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Historia multifurcada]]></title>
<link>http://bucles.wordpress.com/?p=192</link>
<pubDate>Wed, 18 Jun 2008 15:50:14 +0000</pubDate>
<dc:creator>Marcos</dc:creator>
<guid>http://bucles.wordpress.com/?p=192</guid>
<description><![CDATA[Ayer decidí revivir un viejo proyecto: el de la historia multifurcada. Se trata de una historia cuy]]></description>
<content:encoded><![CDATA[<p>Ayer decidí revivir un viejo proyecto: el de la <strong><a href="http://marcosd.oxyhost.com/historia">historia multifurcada</a></strong>. Se trata de una historia cuya estructura topológica es un <a href="http://mathworld.wolfram.com/RootedTree.html">árbol con raíz</a>.</p>
<p>En cierto sentido, un árbol es lo más opuesto posible a un bucle (dado que explícitamente prohíbe los ciclos); pero me gusta esta estructura porque tiene una definición recursiva muy sencilla.</p>
<p>La idea del proyecto es que cada nodo del árbol define una historia distinta, que se puede extender agregando continuaciones a gusto (para mantener un poco acotada la cosa, puse un límite de 12 continuaciones posibles por nodo; pero creo que es más que suficiente).</p>
<p>No es una idea nueva; todos recordarán la famosa serie de libros <em>Elige tu propia aventura</em> (aunque eran estáticos y no se podían extender), y actualmente hay muchos proyectos por el estilo en internet; pero no muchos en español.</p>
<p>Espero que les guste el proyecto y agreguen sus propios capítulos; puede que dentro de un tiempo publique en forma lineal las ramas más graciosas o bellas.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Humor - Recursividad]]></title>
<link>http://julianrdz.wordpress.com/?p=167</link>
<pubDate>Sat, 14 Jun 2008 00:08:24 +0000</pubDate>
<dc:creator>Julián Rodríguez</dc:creator>
<guid>http://julianrdz.wordpress.com/?p=167</guid>
<description><![CDATA[La verdad estaba buscando informacion sobre recursividad en C y C++ asi que se me ocurrio buscar con]]></description>
<content:encoded><![CDATA[<p>La verdad estaba buscando informacion sobre recursividad en C y C++ asi que se me ocurrio buscar con la palabra recursividad en Google y me encontre con esta imagen, en realidad es humor sobre este concepto de recursividad.</p>
<p style="text-align:center;"><img class="aligncenter" src="http://julianrdz.wordpress.com/files/2008/06/recursividad.jpg" alt="" /></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Recursividad en C]]></title>
<link>http://julianrdz.wordpress.com/?p=164</link>
<pubDate>Fri, 13 Jun 2008 17:16:43 +0000</pubDate>
<dc:creator>Julián Rodríguez</dc:creator>
<guid>http://julianrdz.wordpress.com/?p=164</guid>
<description><![CDATA[# include&#8221;stdio.h&#8221;
int potencia (int,int);
void main ()
{
int b,e,x;
printf(&#8221;Intro]]></description>
<content:encoded><![CDATA[<p># include"stdio.h"<br />
int potencia (int,int);<br />
void main ()<br />
{<br />
int b,e,x;<br />
printf("Introduce la base:n");<br />
scanf("%d",&#38;b);<br />
printf("Introduce el exponente:n");<br />
scanf("%d",&#38;e);<br />
x=potencia(b,e);<br />
printf("la potencia es igual a %i",x);<br />
}<br />
int potencia(int b,int e)<br />
{<br />
int pot=1;<br />
if (e==0)<br />
return 1;<br />
else<br />
{<br />
pot=b*potencia(b,e-1);<br />
return pot;<br />
}<br />
}</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Frase del día]]></title>
<link>http://libertadcero.wordpress.com/?p=330</link>
<pubDate>Tue, 27 May 2008 15:15:15 +0000</pubDate>
<dc:creator>ggerman</dc:creator>
<guid>http://libertadcero.wordpress.com/?p=330</guid>
<description><![CDATA[&#8230;&#8221;Por cierto sigue con la estupidez de las frases “cut &amp; paste” que encuentra en]]></description>
<content:encoded><![CDATA[<blockquote><p>..."Por cierto sigue con la estupidez de las frases “cut &#38; paste” que encuentra en sus largas horas de ocio no creativo en la web."...<br />
<em>Anonymous</em></p></blockquote>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Cómo leer un libro]]></title>
<link>http://bucles.wordpress.com/?p=186</link>
<pubDate>Tue, 20 May 2008 22:00:24 +0000</pubDate>
<dc:creator>Marcos</dc:creator>
<guid>http://bucles.wordpress.com/?p=186</guid>
<description><![CDATA[Un interesante libro. Me pregunto si trae un resumen de sí mismo en la contraportada, para poder co]]></description>
<content:encoded><![CDATA[<p><a href="http://www.amazon.com/gp/product/0671212095"><img class="alignright" style="float:right;" src="http://ecx.images-amazon.com/images/I/41BF2MX2B4L._SS500_.jpg" alt="Cómo leer un libro" width="240" height="240" /></a>Un interesante libro. Me pregunto si trae un resumen de sí mismo en la contraportada, para poder comenzar a leerlo...</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Recursividad]]></title>
<link>http://sigresumen.wordpress.com/?p=38</link>
<pubDate>Mon, 05 May 2008 17:58:30 +0000</pubDate>
<dc:creator>SIG BLOG</dc:creator>
<guid>http://sigresumen.wordpress.com/?p=38</guid>
<description><![CDATA[
]]></description>
<content:encoded><![CDATA[<p style="text-align:center;"><a href="http://sigresumen.files.wordpress.com/2008/05/recursividad.jpg"><img class="alignnone size-medium wp-image-39 aligncenter" src="http://sigresumen.wordpress.com/files/2008/05/recursividad.jpg?w=300" alt="" width="300" height="272" /></a></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Recursividad Indirecta]]></title>
<link>http://singularidad.wordpress.com/?p=769</link>
<pubDate>Mon, 05 May 2008 10:08:00 +0000</pubDate>
<dc:creator>Carlos</dc:creator>
<guid>http://singularidad.wordpress.com/?p=769</guid>
<description><![CDATA[&#8230; o quizás una vuelta de tuerca al argumento de la simulación.

]]></description>
<content:encoded><![CDATA[<p>... o quizás una vuelta de tuerca al <a title="¿Eres un Sim?" href="http://singularidad.wordpress.com/2007/03/19/el-argumento-de-la-simulacion-%c2%bferes-un-sim/" target="_self">argumento de la simulación</a>.</p>
<p style="text-align:center;"><a title="To Be Wanted" href="http://xkcd.com/372/" target="_blank"><img class="aligncenter" src="http://imgs.xkcd.com/comics/to_be_wanted.png" alt="To Be Wanted" /></a></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Pantallas compartidas]]></title>
<link>http://bucles.wordpress.com/?p=174</link>
<pubDate>Mon, 21 Apr 2008 19:56:30 +0000</pubDate>
<dc:creator>Marcos</dc:creator>
<guid>http://bucles.wordpress.com/?p=174</guid>
<description><![CDATA[Un curioso ejemplo de recursión, creado con dos computadoras compartiendo sus pantallas.
(gracias S]]></description>
<content:encoded><![CDATA[<p><a href="http://www.entremaqueros.com/bitacoras/memoria/?p=925"><img class="alignright" style="float:right;" src="http://www.entremaqueros.com/bitacoras/memoria/wp-content/img/RegresionInfinita2.png" alt="recursión compartiendo pantallas" width="200" /></a>Un curioso ejemplo de recursión, creado con dos computadoras <strong><a href="http://www.entremaqueros.com/bitacoras/memoria/?p=925">compartiendo sus pantallas</a></strong>.</p>
<p><em>(gracias <a href="http://blogdesilta.blogspot.com/" target="_blank">Silta</a> por el link)</em></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[SOLUCIONES DE LA SERIE DE FIBONACCI CON RECURSIVIDAD]]></title>
<link>http://mequezada.wordpress.com/?p=8</link>
<pubDate>Tue, 08 Apr 2008 14:27:01 +0000</pubDate>
<dc:creator>mequezada</dc:creator>
<guid>http://mequezada.wordpress.com/?p=8</guid>
<description><![CDATA[//Fibbonacci con recursividad
#include&lt;iostream.h&gt;
#include&lt;conio.h&gt;
void fibonacci(int ]]></description>
<content:encoded><![CDATA[<p>//Fibbonacci con recursividad<br />
#include&#60;iostream.h&#62;<br />
#include&#60;conio.h&#62;<br />
void fibonacci(int n,int f,int aux);<br />
//int f=0,b=1,c=1;<br />
void main()<br />
{<br />
clrscr();</p>
<p>fibonacci(10,0,1);<br />
getch();<br />
}</p>
<p>void fibonacci(int n,int f,int aux)<br />
{<br />
cout&#60;&#60;"\n"&#60;&#60;f;<br />
//    b=c;<br />
//    c=f;<br />
//    f=b+c;<br />
if(n&#62;1)</p>
<p>{<br />
fibonacci((n-1),(f+aux),(f));<br />
}</p>
<p>}</p>
<p>OTRA SOLUCION</p>
<p>//Fibbonacci con recursividad<br />
#include&#60;iostream.h&#62;<br />
#include&#60;conio.h&#62;<br />
void fibonacci(int n);<br />
int f=0,b=1,c=1;<br />
void main()<br />
{<br />
clrscr();<br />
int a;<br />
cout&#60;&#60;"INGRESE NUMERO: ";<br />
cin&#62;&#62;a;<br />
fibonacci(a);<br />
//    cout&#60;&#60;n&#60;&#60;"\t";<br />
getch();<br />
}</p>
<p>void fibonacci(int n)<br />
{<br />
cout&#60;&#60;"\n"&#60;&#60;f;<br />
b=c;<br />
c=f;<br />
f=b+c;<br />
if(n&#62;1)</p>
<p>{<br />
n--;<br />
fibonacci(n);<br />
}</p>
<p>}<br />
OTRA SOLUCION</p>
<p>//Fibbonacci con recursividad<br />
#include&#60;iostream.h&#62;<br />
#include&#60;conio.h&#62;<br />
void fibonacci(int n,int b,int c, int  f);<br />
//int f=0,b=1,c=1;<br />
void main()<br />
{<br />
clrscr();<br />
int a;<br />
//    cout&#60;&#60;"INGRESE NUMERO: ";<br />
//    cin&#62;&#62;a;<br />
fibonacci(18,1,1,0)<br />
;<br />
//    cout&#60;&#60;n&#60;&#60;"\t";<br />
getch();<br />
}</p>
<p>void fibonacci(int n,int b, int c, int f)<br />
{<br />
cout&#60;&#60;"\n"&#60;&#60;f;<br />
//    b=c;<br />
//    c=f;<br />
//    f=b+c;<br />
if(n&#62;1)</p>
<p>{<br />
fibonacci((n-1),c,f,(f+c));<br />
}</p>
<p>}</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Recursividad]]></title>
<link>http://magacc1.wordpress.com/?p=11</link>
<pubDate>Tue, 08 Apr 2008 00:53:30 +0000</pubDate>
<dc:creator>magacc1</dc:creator>
<guid>http://magacc1.wordpress.com/?p=11</guid>
<description><![CDATA[//Serie de fibonacci con recursividad
#include&lt;iostream.h&gt;
#include&lt;conio.h&gt;
void  func]]></description>
<content:encoded><![CDATA[<p>//Serie de fibonacci con recursividad<br />
#include&#60;iostream.h&#62;<br />
#include&#60;conio.h&#62;</p>
<p>void  func1(int n);</p>
<p>int x,f=0,b=1,c=1;</p>
<p>void  main()<br />
{<br />
        clrscr();<br />
        cout&#60;&#60;"\t Ingrese un Numero:  ";<br />
        cin&#62;&#62;x;<br />
        cout&#60;&#60;"\n\n";<br />
        func1(c);<br />
        getch();<br />
}</p>
<p>void func1(int n)<br />
{</p>
<p>     cout&#60;&#60;"\t\t"&#60;&#60;f&#60;&#60;"\n\n";<br />
     b=c;<br />
     c=f;<br />
     f=b+c;<br />
     if(x&#62;1)<br />
    {<br />
         x--;<br />
         func1(n);<br />
    }</p>
<p>}</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[RECURSIVIDAD]]></title>
<link>http://cmcumbicus.wordpress.com/?p=17</link>
<pubDate>Tue, 08 Apr 2008 00:52:25 +0000</pubDate>
<dc:creator>Cristian Cumbicus</dc:creator>
<guid>http://cmcumbicus.wordpress.com/?p=17</guid>
<description><![CDATA[ALGORITMOS RECURSIVOS.
Un algoritmo es recursivo cuando se llama de una función a la misma función]]></description>
<content:encoded><![CDATA[<p>ALGORITMOS RECURSIVOS.</p>
<p class="MsoNormal">Un algoritmo es recursivo cuando se llama de una función a la misma función, pero si esto fuera todo se llamaría a la misma función hasta que se agote la memoria en ejecución, por lo tanto debe controlarse mediante una condición de salida, que permita controlar las veces que debe repetirse la función.</p>
<p class="MsoNormal">
<p class="MsoNormal">Un ejemplo de un algoritmo recursivo, este permite presentar la serie de fibonacci de n números, el algoritmo cumple con la funcion pero no es factible, no es recursivo en una forma total.</p>
<p class="MsoNormal">------------------------------------------------------<br />
#include&#60;iostream.h&#62;<br />
#include&#60;conio.h&#62;</p>
<p>#include&#60;dos.h&#62;<br />
void  func1(int n);<br />
int f=0,b=1,c=1;<br />
void  main()<br />
{<br />
clrscr();<br />
int n;<br />
//cout&#60;&#60;"INGRESE NUMERO:";<br />
//    cin&#62;&#62;n;<br />
func1(5);</p>
<p>getch();<br />
}</p>
<p>void func1(int n)<br />
{<br />
cout&#60;&#60;"\t\t"&#60;&#60;f&#60;&#60;"\n\n";<br />
b=c;<br />
c=f;<br />
f=b+c;<br />
if(n&#62;1)<br />
{<br />
n--;<br />
func1(n);</p>
<p>}</p>
<p>}</p>
<p class="MsoNormal">Estos dos algoritmos permiten presentar la misma serie, los algoritmos son optimos.</p>
<p class="MsoNormal">--------------------------------------------------------------</p>
<p class="MsoNormal">//Serie de fibonacci con recursividad<br />
#include&#60;iostream.h&#62;<br />
#include&#60;conio.h&#62;</p>
<p>#include&#60;dos.h&#62;<br />
void func1(int n,int b,int c,int f);<br />
void  main()<br />
{<br />
clrscr();<br />
int n;<br />
//cout&#60;&#60;"INGRESE NUMERO:";<br />
//    cin&#62;&#62;n;<br />
func1(5,1,1,0);</p>
<p>getch();<br />
}</p>
<p>void func1(int n,int b,int c,int f)<br />
{<br />
cout&#60;&#60;f;<br />
if(n&#62;1)<br />
{<br />
func1((n-1),c,f,(f+c));<br />
}<br />
}</p>
<p class="MsoNormal">-------------------------------------------------------------</p>
<p class="MsoNormal">En este ejemplo se utiliza solo dos variables enteras (aux, f)</p>
<p>//Serie de fibonacci con recursividad y dos variables<br />
#include&#60;iostream.h&#62;<br />
#include&#60;conio.h&#62;<br />
#include&#60;dos.h&#62;</p>
<p>void func1(int n,int f,int aux);</p>
<p>void  main()<br />
{<br />
clrscr();<br />
int n;<br />
//    cout&#60;&#60;"INGRESE NUMERO:";<br />
//    cin&#62;&#62;n;<br />
func1(5,0,1);</p>
<p>getch();<br />
}</p>
<p>void func1(int n,int f,int aux)<br />
{<br />
cout&#60;&#60;f;</p>
<p>if(n&#62;1)<br />
{</p>
<p>func1((n-1),(f+aux),f);</p>
<p>}<br />
}</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Recursividad]]></title>
<link>http://magacc1.wordpress.com/?p=10</link>
<pubDate>Tue, 08 Apr 2008 00:48:38 +0000</pubDate>
<dc:creator>magacc1</dc:creator>
<guid>http://magacc1.wordpress.com/?p=10</guid>
<description><![CDATA[//Serie de fibonacci con recursividad
#include&lt;iostream.h&gt;
#include&lt;conio.h&gt;
void func1(]]></description>
<content:encoded><![CDATA[<p>//Serie de fibonacci con recursividad<br />
#include&#60;iostream.h&#62;<br />
#include&#60;conio.h&#62;</p>
<p>void func1(int n,int b,int c,int f);<br />
void  main()<br />
{<br />
  clrscr();<br />
  int n;<br />
  func1(5,1,1,0);</p>
<p> getch();<br />
}</p>
<p>void func1(int n,int b,int c,int f)<br />
{<br />
 cout&#60;&#60;f;<br />
 if(n&#62;1)<br />
 {<br />
  func1((n-1),c,f,(f+c));<br />
        }<br />
}</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Recursividad]]></title>
<link>http://magacc1.wordpress.com/?p=9</link>
<pubDate>Tue, 08 Apr 2008 00:43:45 +0000</pubDate>
<dc:creator>magacc1</dc:creator>
<guid>http://magacc1.wordpress.com/?p=9</guid>
<description><![CDATA[//Serie de fibonacci con recursividad y dos variables
#include&lt;iostream.h&gt;
#include&lt;conio.h]]></description>
<content:encoded><![CDATA[<p>//Serie de fibonacci con recursividad y dos variables<br />
#include&#60;iostream.h&#62;<br />
#include&#60;conio.h&#62;<br />
#include&#60;dos.h&#62;</p>
<p>void func1(int n,int f,int aux);</p>
<p>void  main()<br />
{<br />
 clrscr();<br />
 int n;<br />
     func1(5,0,1);</p>
<p> getch();<br />
}</p>
<p>void func1(int n,int f,int aux)<br />
{<br />
 cout&#60;&#60;f;</p>
<p> if(n&#62;1)<br />
 {</p>
<p>  func1((n-1),(f+aux),f);</p>
<p> }<br />
}</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[SOLUCIONES DE LA SERIE DE FIBONACCI UTILIZANDO RECURSIVIDAD]]></title>
<link>http://ldcastillo.wordpress.com/?p=20</link>
<pubDate>Fri, 04 Apr 2008 16:37:51 +0000</pubDate>
<dc:creator>ldcastillo</dc:creator>
<guid>http://ldcastillo.wordpress.com/?p=20</guid>
<description><![CDATA[ESTA ES UNA DE LAS SOLUCIONES DE FIBONACCI UTILIZANDO RECURSIVIDAD
//Fibbonacci con recursividad
#in]]></description>
<content:encoded><![CDATA[<p>ESTA ES UNA DE LAS SOLUCIONES DE FIBONACCI UTILIZANDO RECURSIVIDAD</p>
<p>//Fibbonacci con recursividad<br />
#include&#60;iostream.h&#62;<br />
#include&#60;conio.h&#62;<br />
int fibonacci(int n);<br />
void main()<br />
{<br />
 clrscr();<br />
 int n,f;<br />
 cout&#60;&#60;"INGRESE NUMERO: ";<br />
 cin&#62;&#62;n;<br />
 fibonacci(n);<br />
 cout&#60;&#60;n&#60;&#60;"\n";<br />
 getch();<br />
}</p>
<p>int fibonacci(int n)<br />
{<br />
    if(n==0)<br />
    {<br />
       return 0;<br />
    }<br />
    else<br />
    {<br />
 if(n==1)<br />
 {<br />
     return 1;<br />
 }<br />
 else<br />
 {<br />
    return fibonacci(n-1) + fibonacci(n-2);<br />
 }<br />
    }<br />
}</p>
<p>LA SIGUIENTE CODIFICACION ES OTRA SOLUCION</p>
<p>//Fibbonacci con recursividad<br />
#include&#60;iostream.h&#62;<br />
#include&#60;conio.h&#62;<br />
void fibonacci(int n);<br />
int f=0,b=1,c=1;<br />
void main()<br />
{<br />
 clrscr();<br />
 int a;<br />
 cout&#60;&#60;"INGRESE NUMERO: ";<br />
 cin&#62;&#62;a;<br />
 fibonacci(a);<br />
       // cout&#60;&#60;n&#60;&#60;"\t";<br />
 getch();<br />
}</p>
<p>void fibonacci(int n)<br />
{<br />
 cout&#60;&#60;"\n"&#60;&#60;f;<br />
 b=c;<br />
 c=f;<br />
 f=b+c;<br />
 if(n&#62;1)</p>
<p> {<br />
   n--;<br />
   fibonacci(n);<br />
 }</p>
<p>}<br />
ESTA ES OTRA DE UNA DE LAS SOLUCIONES</p>
<p>//Fibbonacci con recursividad<br />
#include&#60;iostream.h&#62;<br />
#include&#60;conio.h&#62;<br />
void fibonacci(int n,int f,int aux);<br />
//int f=0,b=1,c=1;<br />
void main()<br />
{<br />
 clrscr();</p>
<p> fibonacci(10,0,1);<br />
 getch();<br />
}</p>
<p>void fibonacci(int n,int f,int aux)<br />
{<br />
 cout&#60;&#60;"\n"&#60;&#60;f;<br />
       // b=c;<br />
       // c=f;<br />
      // f=b+c;<br />
 if(n&#62;1)</p>
<p> {<br />
   fibonacci((n-1),(f+aux),(f));<br />
 }</p>
<p>}<br />
 </p>
<p>:::::ESPERO QUE  ESTAS SOLUCIONES DE LA SERIE DE FIBONACCI SEA DE UNA GRAN AYUDA::::</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[  SOLUCIONES DE FIBONACCI UTILIZANDO RECURSIVIDAD]]></title>
<link>http://retinitana.wordpress.com/?p=6</link>
<pubDate>Fri, 04 Apr 2008 00:13:49 +0000</pubDate>
<dc:creator>retinitana</dc:creator>
<guid>http://retinitana.wordpress.com/?p=6</guid>
<description><![CDATA[ESTRUCTURA DE DATOS
//programa para presentar los numeros fibonaci  con
//recursividad  esta es un]]></description>
<content:encoded><![CDATA[<p><strong>ESTRUCTURA DE DATOS</strong></p>
<p>//programa para presentar los numeros fibonaci  con<br />
//recursividad  esta es una solucion</p>
<p>#include&#60;iostream.h&#62;<br />
#include&#60;conio.h&#62;<br />
void  fibo( int n,int b,int c, int f);<br />
void main()</p>
<p>{</p>
<p> clrscr();<br />
 fibo(5,1,1,0);<br />
 getch();<br />
}<br />
void  fibo (int n,int b,int c, int f)<br />
{<br />
 cout&#60;&#60;f&#60;&#60;"\n";<br />
 if(n&#62;1)<br />
 {</p>
<p>  fibo((n-1),c,b,(f+c));</p>
<p> }</p>
<p>}</p>
<p>//programa que permita la serie de los n numeros de la  fibonaci esta vien<br />
// con recursividad<br />
#include&#60;iostream.h&#62;<br />
#include&#60;conio.h&#62;<br />
//prototipo<br />
void  funcion1( int n);<br />
//variables globales<br />
int b=1,c=1,f=0;<br />
//funcion principal<br />
void main()<br />
{<br />
 int a;<br />
 clrscr();<br />
 cout&#60;&#60;"ingrese los n numeros e la fibonaci";<br />
 cin&#62;&#62;a;<br />
 funcion1(a);<br />
 getch();<br />
}<br />
void funcion1(int n)<br />
{<br />
 cout&#60;&#60;f;<br />
 b=c;<br />
 c=f;<br />
 f=b+c;<br />
 if(n&#62;1)<br />
 {<br />
  n--;<br />
  funcion1(n);<br />
 }<br />
}<br />
//ejercicio que presenta la serie del fibonaci de n numeros<br />
// con recursividad<br />
//esta es otra solucion<br />
#include&#60;iostream.h&#62;<br />
#include&#60;conio.h&#62;<br />
void  fibo( int n,int f, int aux);<br />
void main()</p>
<p>{</p>
<p> clrscr();<br />
 fibo(5,0,1);<br />
 getch();<br />
}<br />
void  fibo (int n,int f,int aux)<br />
{<br />
 cout&#60;&#60;f&#60;&#60;"\n";<br />
 if(n&#62;1)<br />
 {</p>
<p>       fibo((n-1),(f+aux),(f));<br />
 }</p>
<p>}</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Un cosmos de 3x3]]></title>
<link>http://bucles.wordpress.com/?p=166</link>
<pubDate>Wed, 12 Mar 2008 21:38:38 +0000</pubDate>
<dc:creator>Marcos</dc:creator>
<guid>http://bucles.wordpress.com/?p=166</guid>
<description><![CDATA[Hoy me topé con placer con el proyecto Gridcosm, uno de los geniales proyectos alojados en Sito.
Tr]]></description>
<content:encoded><![CDATA[<p><a href="http://www.sito.org/synergy/gridcosm/"><img src="http://www.sito.org/synergy/gridcosm/pieces/2198-f.jpg" align="right" width="225" /></a>Hoy me topé con placer con el proyecto <b><a href="http://www.sito.org/synergy/gridcosm/">Gridcosm</a></b>, uno de los geniales proyectos alojados en <a href="http://www.sito.org/">Sito</a>.</p>
<p>Traduzco la descripción:</p>
<p>«<b>Gridcosm</b> es un proyecto de arte colaborativo, en el cual artistas de todo el mundo contribuyen con imágenes para componer una serie de grillas gráficas. Cada nivel de Gridcosm está hecho de <b>nueve imágenes cuadradas</b>, dispuestas en una grilla de 3x3. La imagen central es una versión de un tercio del tamaño <i>del nivel anterior</i>. Los artistas agregan imágenes alrededor de la imagen central hasta que se completa la grilla de 3x3, y luego el nivel se reduce y se convierte en la <i>semilla</i> del próximo nivel. Este proceso crea un túnel de imágenes en expansión, siendo cada nuevo nivel el resultado directo del nivel anterior, el cual es resultado del nivel anterior, y así <i>ad infinitum</i>.»</p>
<p>Es un impresionante trabajo. Produce un efecto (creo que intencionalmente) surreal, y más si se lo navega con esta <a href="http://www.sito.org/synergy/gridcosm/gridcosmviewer.swf?TOPLEVEL=&#38;STARTLEVEL=">herramienta flash</a>, que permite hacer un zoom casi continuo entre niveles.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Listas]]></title>
<link>http://pecio.wordpress.com/?p=114</link>
<pubDate>Fri, 29 Feb 2008 21:27:59 +0000</pubDate>
<dc:creator>Raúl Pedroche</dc:creator>
<guid>http://pecio.wordpress.com/?p=114</guid>
<description><![CDATA[Sigo con mis disertaciones sobre Erlang.
En mi anterior entrada dije que iba a intentar hablar de la]]></description>
<content:encoded><![CDATA[<p align="justify">Sigo con mis disertaciones sobre <a href="http://www.erlang.org/" title="The Erlang Programming Language">Erlang</a>.</p>
<p align="justify">En mi <a href="http://pecio.wordpress.com/2008/02/24/un-poquito-mas-de-erlang/" title="Un poquito más de Erlang">anterior entrada</a> dije que iba a intentar hablar de las listas y las tuplas. Estoy vago, así que voy a hablar sólo de las primeras.</p>
<p><!--more--></p>
<p align="justify">Las listas en Erlang se escriben entre corchetes y separadas por comas. Así de sencillo.</p>
<pre>1&#62; [1,2,3,4].
[1,2,3,4]</pre>
<p align="justify">O así de complicado, como se quiera ver. Los miembros pueden ser escalares, otras listas, tuplas etcétera.</p>
<pre>
2&#62; [atomo,[1,2],3].
[atomo,[1,2],3]</pre>
<p align="justify">Podemos asignárselas a variables, pasárselas como parámetros a funciones, incluir el resultado de funciones en ellas...</p>
<pre>3&#62; Lista=[datos,[1,5,max:max(1,5)]].
[datos,[1,5,5]]</pre>
<p align="justify">La función <code>max:max/2</code> la definimos en la anterior entrada.</p>
<p align="justify">¿Cómo podemos escribir una función que procese una lista? Buen, hay que saber dos cosas más sobre las listas. La primera, que una lista vacía se identifica con un par de corchetes, "<code>[]</code>". La segunda es que una lista se puede descomponer, salvo que sea vacía, en dos elementos: Cabeza y Cola.</p>
<p align="justify">La "cabeza" es el primer elemento, la "cola" es la lista formada por el resto de elementos de la lista. Si la lista sólo tiene un elemento, la cola será una lista vacía.</p>
<p align="justify">Para ilustrarlo, no me voy a salir del shell, todavía, y voy a utilizar una funcionalidad llamada "pattern matching" (nunca he sabido cómo traducir eso). Esta funcionalidad se traduce en una gran flexibilidad a la hora de hacer asignaciones.</p>
<p align="justify">Antes de mostrar lo de la cabeza y la cola, voy a mostrar un par de ejemplos del "pattern matching" ese, un poco limitado por no haber tuplas:</p>
<pre>4&#62; [A,B]=[1,2].
[1,2]
5&#62; A.
1
6&#62; B.
2
7&#62; [C,[D,E]]=[3,[A,[1,2,3]]].
[3,[1,[1,2,3]]]
8&#62; C.
3
9&#62; D.
1
10&#62; E.
[1,2,3]</pre>
<p align="justify">Eso sí, si lo de la derecha y lo de la izquierda no se corresponden, tendremos un errory no conseguiremos nada:</p>
<pre>11&#62; [F,G,H]=[1,[2,3]].
** exception error: no match of right hand side value [1,[2,3]]
12&#62; F.
* 1: variable 'F' is unbound</pre>
<p align="justify">A la hora de dividir una lista en cabeza y cola, empleamos el carácter de tubería, "<code>&#124;</code>". Así, toda lista es equivalente a <code>[Cabeza&#124;Cola]</code>:</p>
<pre>13&#62; [Cabeza&#124;Cola]=[1,2,3,4].
[1,2,3,4]
14&#62; Cabeza.
1
15&#62; Cola.
[2,3,4]</pre>
<p align="justify">Como dije antes, la cola puede ser una lista vacía y la lista vacía no se puede descomponer:</p>
<pre>16&#62; [Cabeza2&#124;Cola2]=[unsoloelemento].
[unsoloelemento]
17&#62; Cabeza2.
unsoloelemento
18&#62; Cola2.
[]
19&#62; [Cabeza3&#124;Cola3]=Cola2.
** exception error: no match of right hand side value []</pre>
<p align="justify">Esta construcción también puede utilizarse para crear listas:</p>
<pre>20&#62; [5&#124;Cola].
[5,2,3,4]</pre>
<p align="justify">Sabiendo esto, no debería ser muy difícil adivinar cómo procesar listas en nuestras funciones. Tomemos este código:</p>
<div style="border:1px solid black;color:black;background-color:white;padding:1em;"><font face="monospace"><font color="#2e8b57"><b>-module</b></font>(imprime)<font color="#6a5acd">.</font><br />
<font color="#2e8b57"><b>-export</b></font>([lista<font color="#804040"><b>/</b></font><font color="#ff00ff">1</font>])<font color="#6a5acd">.</font></font><font face="monospace">lista([Cabeza&#124;Cola]) <font color="#804040"><b>-&#62;</b></font><br />
<font color="#008080">io</font><font color="#6a5acd">:</font><font color="#008080">format</font>(<font color="#ff00ff">"</font><font color="#6a5acd">~w~n</font><font color="#ff00ff">"</font>, [Cabeza]),<br />
lista(Cola);<br />
lista([]) <font color="#804040"><b>-&#62;</b></font><br />
ok<font color="#6a5acd">.</font><br />
</font></div>
<p align="justify">Como he hecho con anterioridad, voy a analizar el código:</p>
<dl>
<dt><code>lista([Cabeza&#124;Cola]) -&#62;</code></dt>
<dd>
<p align="justify">Esta primera definición de la función <code>imprime:lista/1</code> es la que hace el trabajo. Cuando recibe una lista, almacena el primer elemento de la misma en la variable Cabeza y el resto de la lista, como una nueva lista, en Cola. Cualquier lista no vacía es válida, ya tenga un elemento, en cuyo caso Cola sería una lista vacía, o un millón, en cuyo caso Cola tendría 999.999 elementos.</p>
</dd>
<dt><code>io:format("~w~n", [Cabeza])</code></dt>
<dd>
<p align="justify">La función <code>io:format/2</code> es una de las funciones estándar de Erlang. Ya hablé por encima de ella en <a href="http://pecio.wordpress.com/2008/02/18/primeros-pasos-con-erlang/" title="Primeros pasos con Erlang">mi primera entrada</a>, pero voy a profundizar un poco.</p>
<p align="justify">Toma dos parámetros: una cadena y una lista (esto no es del todo preciso como explicaré más adelante). La cadena indica el formato con el que se quieren imprimir los miembros de la lista. Sí, se parece terriblemente a <code>printf</code>.</p>
<p align="justify">En nuestro caso, la cadena es <code>"~w~n"</code>. En lugar del símbolo de tanto por ciento "<code>%</code>" utilizando en <code>printf</code>, la función <code>io:format/2</code> de Erlang utiliza la tilde de la eñe, "<code>~</code>". El primer código, "<code>~w</code>", quiere decir "imprimir el dato con la sintáxis estándar"; es válido para cualquier construcción en Erlang. El segundo, "<code>~n</code>", indica que se debe imprimir un salto de línea. Por supuesto, podríamos haber incluído literales. La documentación completa de la función está <a href="http://erlang.org/doc/man/io.html#format-1" title="Página del manual de Erlang para el módulo io">aquí</a>.</p>
<p align="justify">El caso es que, con esta función, lo que estamos haciendo es imprimir Cabeza con la sintáxis estándar adecuada en una línea.</p>
</dd>
<dt><code>,</code> (coma)</dt>
<dd>
<p align="justify">Otra novedad, la coma. Hasta ahora la habíamos visto separando los parámetros de las funciones y los elementos de las listas. Pero, ¿qué hace aquí?</p>
<p align="justify">Muy simple: la coma después de una sentencia quiere decir "ejecuta la anterior sentencia y después la siguiente". Es la forma de poder ejecutar sentencias secuencialmente. En nuestro caso, queremos que <code>imprime:lista([Cabeza&#124;Cola])</code> imprima Cabeza y, después, llame a <code>imprime:lista/1</code> con Cola, de manera que recorramos toda la lista.</p>
<p align="justify">Es interesante observar cómo se parece, en lo que a puntuación se refiere, la definición de una función en Erlang a un lenguaje "natural". Podemos "leer en voz alta" la definición de nuestra función como "Para una lista con un primer elemento Cabeza y un resto de lista Cola imprime Cabeza<span style="color:red;">,</span> llámate a ti misma con Cola<span style="color:red;">;</span> para la lista vacía devuelve ok<span style="color:red;">.</span>". Bueno, se parece más al inglés que al castellano: nosotros podríamos más comas al principio.</p>
</dd>
<dt><code>lista(Cola);</code></dt>
<dd>
<p align="justify">Tras haber impreso Cabeza, llamamos a la misma función de manera recursiva con Cola o, dicho de otro modo, procesamos el resto de la lista.</p>
</dd>
<dt><code>lista([]) -&#62;</code></dt>
<dd>
<p align="justify">Como dije antes, la única lista que no podemos descomponer es la vacía, de manera que la anterior definición va a aplicar a todas menos a esta. Cuando hemos procesado toda la lista, la anterior definición llama a la función con la lista vacía y se ejecuta esta parte del código. Si no lo definiésemos, la lista se imprimiría igual, pero terminaríamos recibiendo un error.</p>
</dd>
<dt><code>ok.</code></dt>
<dd>
<p align="justify">Cuando llegamos al final, simplemente devolvemos el átomo "<code>ok</code>". En su lugar podríamos haber puesto "<code>fin</code>", "<code>end</code>" o "<code>-1</code>", a Erlang le da lo mismo.</p>
</dd>
</dl>
<p align="justify">Esto ha sido largo. Vamos a probar a ejecutar nuestra flamante función:</p>
<pre>1&#62; imprime:lista([1,2,3]).
1
2
3
ok
2&#62; imprime:lista([[1,2,3]]).
[1,2,3]
ok
3&#62; imprime:lista([1,[2,3]]).
1
[2,3]
ok
4&#62; imprime:lista([]).
ok</pre>
<p align="justify">Bien, ¿qué ha ocurrido la primera vez que hemos llamado a la <code>imprime:lista/1</code>?</p>
<p align="justify">Le hemos pasado la lista de tres elementos <code>[1,2,3]</code>. Como no es vacía, Erlang ha ejecutado la primera versión como <code>imprime:lista([1&#124;[2,3]])</code> (Cabeza=<code>1</code>, Cola=<code>[2,3]</code>).</p>
<p align="justify">Entonces nuestro código ha impreso <code>1</code> y llamado otra vez a la función con el parámetro <code>[2,3]</code>. Se ha vuelto a ejecutar la primera versión, invocada como <code>imprime:lista([2,[3]])</code> (Cabeza=<code>2</code>, Cola=<code>[3]</code>), imprimiéndose <code>2</code> y llamándose otra vez a la función con el parámetro <code>[3]</code>.</p>
<p align="justify">Esto se ha convertido en una llamada a <code>imprime:lista([3,[]])</code> (Cabeza=<code>3</code>, Cola=<code>[]</code>, la lista vacía), que ha impreso <code>3</code> y ha vuelto a llamar a la función, esta vez con una lista vacía como parámetro.</p>
<p align="justify">Llegados a este punto, ha sido la segunda versión de la función la que se ha ejecutado, devolviendo el átomo <code>ok</code> al shell, que este ha impreso en la última línea.</p>
<p align="justify">En la segunda invocación, vemos que podemos llamar a nuestra función directamente con una lista con un único elemento y, de paso, cómo imprime <code>io:format</code> una lista. Como se puede ver en la cuarta invocación, podemos llamar a nuestra función con una lista vacía sin problemas.</p>
<p align="justify">&#160;</p>
<p align="justify">Ha llegado el momento de hacer algo más interesante que imprimir los elementos uno por uno. Vamos a coger la idea del módulo "max" de la anterior entrada y definir una nueva función que halle el máximo de entre todos los elementos de una lista.</p>
<div style="border:1px solid black;color:black;background-color:white;padding:1em;"><font face="monospace"><font color="#2e8b57"><b>-module</b></font>(max)<font color="#6a5acd">.</font><br />
<font color="#2e8b57"><b>-export</b></font>([max<font color="#804040"><b>/</b></font><font color="#ff00ff">2</font>,max<font color="#804040"><b>/</b></font><font color="#ff00ff">1</font>])<font color="#6a5acd">.</font></font><font face="monospace">max(A, B) <font color="#804040"><b>when</b></font> is_number(A) <font color="#804040"><b>and</b></font> is_number(B) <font color="#804040"><b>and</b></font> A <font color="#804040"><b>&#62;</b></font> B <font color="#804040"><b>-&#62;</b></font><br />
A;<br />
max(A, B) <font color="#804040"><b>when</b></font> is_number(A) <font color="#804040"><b>and</b></font> is_number(B) <font color="#804040"><b>-&#62;</b></font><br />
B;<br />
max(<font color="#6a5acd">_</font>, <font color="#6a5acd">_</font>) <font color="#804040"><b>-&#62;</b></font><br />
error<font color="#6a5acd">.</font></font><font face="monospace"><font color="#0000ff">% Nuestra nueva función. Queremos que de error de inmediato</font><br />
<font color="#0000ff">% si el primer elemento no es un número</font><br />
max([Cabeza&#124;Cola]) <font color="#804040"><b>when</b></font> is_number(Cabeza) <font color="#804040"><b>-&#62;</b></font><br />
max2(Cabeza, Cola)<font color="#6a5acd">.</font></font><font face="monospace">max2(Maximo, [Cabeza&#124;Cola]) <font color="#804040"><b>when</b></font> is_number(Cabeza) <font color="#804040"><b>and</b></font> Cabeza <font color="#804040"><b>&#62;</b></font> Maximo <font color="#804040"><b>-&#62;</b></font><br />
max2(Cabeza, Cola);<br />
max2(Maximo, [<font color="#6a5acd">_</font>&#124;Cola]) <font color="#804040"><b>-&#62;</b></font><br />
max2(Maximo, Cola);<br />
max2(Maximo, []) <font color="#804040"><b>-&#62;</b></font><br />
Maximo<font color="#6a5acd">.</font></font></div>
<p align="justify">Veamos qué hemos puesto aquí...</p>
<dl>
<dt><code>-export([max/2,max/1]).</code> </dt>
<dt>
</dt>
<dd>
<p align="justify">Hemos modificado la sentencia <code>-export</code> para añadir nuestra nueva función, <code>max/1</code>. Como se puede observar, <code>[max/2,max/1]</code> también es una lista, de ahí los corchetes que hemos estado poniendo hasta ahora.</p>
</dd>
<dt><code>% Nuestra nueva función...</code> </dt>
<dt>
</dt>
<dd>
<p align="justify">Nuestro primer comentario. Podemos poner comentarios en el código precediéndolos con un símbolo de tanto por ciento (<code>%</code>); llegarán hasta el final de la línea.</p>
</dd>
<dt><code>max([Cabeza&#124;Cola]) when is_number(Cabeza) -&#62;</code></dt>
<dd>
<p align="justify">Al igual que hicimos con <code>max/2</code>, queremos que Erlang de error si los parámetros no son números. Aquí nos aseguramos de que lo diga si el primer elemento de la lista no es un número; más abajo lo haremos con los demás elementos. Por lo demás, la definición de la función es sencilla.</p>
</dd>
<dt><code>max2(Cabeza, Cola).</code></dt>
<dd>
<p align="justify">Vamos a definir una nueva función, <code>max2/2</code>, que será la que en realidad busque el máximo. A esta función le pasamos el primer elemento de la lista y el resto de la misma.</p>
</dd>
<dt><code>max2(Maximo, [Cabeza&#124;Cola])</code></dt>
<dd>
<p align="justify">Esta es la función. La primera versión es un poco larga. Como el nombre del parámetros sugiere, <code>max2/2</code> espera recibir como primer parámetro el máximo parcial y, como segundo parámetro, la lista contra la que comparará ese máximo parcial.</p>
</dd>
<dt><code>when is_number(Cabeza)</code></dt>
<dd>
<p align="justify">Como dijimos antes, queremos que de error si algún elemento no es un número. Ya lo hicimos antes para el primero, aquí lo hacemos para los demás.</p>
</dd>
<dt><code>and Cabeza &#62; Maximo -&#62;</code></dt>
<dd>
<p align="justify">Esta primera versión de la función se ejecutará sólo cuando Cabeza sea mayor que máximo, es decir, cuando el máximo cambie. Cuando esto ocurra, llamaremos otra vez a la función <code>max2/2</code>, pasándole Cabeza como nuevo Maximo y el resto de la lista.</p>
</dd>
<dt><code>max2(Maximo,[_&#124;Cola]) -&#62;</code></dt>
<dd>
<p align="justify">Esta versión se ejecutará cuando no se cumpla la anterior condición, es decir, cuando Maximo sea mayor o igual a la cabeza de la lista. Como ya sabemos eso, el valor de la cabeza de la lista no nos importa, por lo que utilizamos la variable anónima, "<code>_</code>". Después, simplemente volvemos a llamar a <code>max2/2</code> con el máximo que ya teníamos y el resto de la lista.</p>
</dd>
<dt><code>max2(Maximo,[]) -&#62;</code></dt>
<dd>
<p align="justify">Cuando ya no quedan elementos en la lista por procesar, se ejecuta esta versión de la función, que devuelve el máximo que se le ha pasado como primer parámetro.</p>
</dd>
</dl>
<p align="justify">Lo ideal sería no haber creado una nueva función, sino haber modificado <code>max/1</code> para que trabajase con listas como segundo parámetro. Además, no parece muy malo que se pueda disponer de esa nueva versión (comparar un número y una lista de números para hallar el máximo) externamente. Sin embargo, aunque no sería muy complicado de hacer, ensuciaría un poco el código.</p>
<p align="justify">Esto me lleva a los ejercicios para el lector. Sí, voy a proponer unos ejercicios.</p>
<ul>
<li>
<p align="justify">Pese a lo expresado arriba, una llamada <code>max:max([1,2,tres,4])</code> no da error y devuelve 4 (<code>tres</code> no es un número, es un átomo). ¿Por qué? ¿Cómo se solucionaría?</p>
</li>
<li>
<p align="justify">Una llamada <code>max:max([noEsUnNumero,2,3,4])</code> provocará un error de Erlang "<code>no function clause matching max:max([noEsUnNumero,2,3,4])</code>". Modificar el código para que, como <code>max/2</code>, devuelva el átomo <code>error</code> si algún elemento de la lista no es un número.</p>
</li>
<li>
<p align="justify">Como adelanté, modificar el código eliminando <code>max2/2</code> e introduciendo su funcionalidad en <code>max/2</code>.</p>
</li>
</ul>
<p align="justify">Dudo que nadie se anime, pero hay que intentarlo. Me queda pendiente explicar el comentario que hice sobre las cadenas, pero esta entrada ya es suficientemente larga.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Reciclaje culinario]]></title>
<link>http://bucles.wordpress.com/?p=152</link>
<pubDate>Sun, 03 Feb 2008 19:32:21 +0000</pubDate>
<dc:creator>Marcos</dc:creator>
<guid>http://bucles.wordpress.com/?p=152</guid>
<description><![CDATA[¿Qué pasa cuando uno pone una Pasta Frola en el horno, y se olvida de sacar una fuente con albónd]]></description>
<content:encoded><![CDATA[<p>¿Qué pasa cuando uno pone una <a href="http://www.solopostres.com/ver-receta.asp?receta=348" title="Alimento de los dioses" target="_blank">Pasta Frola</a> en el horno, y se olvida de sacar una fuente con albóndigas y fideos que había quedado del día anterior?</p>
<p>Se muele el contenido casi quemado de la fuente para preparar <b>meta-albóndigas</b>.</p>
<p><i>(Basado en un hecho real de hace media hora)</i></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[APOSTILLA I A RECURSIVIDAD ]]></title>
<link>http://sauceverde.wordpress.com/2008/01/30/de-fuera-hacia-adentro/</link>
<pubDate>Wed, 30 Jan 2008 13:28:38 +0000</pubDate>
<dc:creator>Sauceverde</dc:creator>
<guid>http://sauceverde.wordpress.com/2008/01/30/de-fuera-hacia-adentro/</guid>
<description><![CDATA[Una excelente y emotiva animación de Carolina Temprado.

APOSTILLA I A RECURSIVIDAD
(DE AFUERA HACI]]></description>
<content:encoded><![CDATA[<p>Una excelente y emotiva animación de Carolina Temprado.</p>
<p><span style='text-align:center; display: block;'><object width='425' height='350'><param name='movie' value='http://www.youtube.com/v/z8T-oyBTBo4'></param><param name='wmode' value='transparent'></param><embed src='http://www.youtube.com/v/z8T-oyBTBo4&rel=0' type='application/x-shockwave-flash' wmode='transparent' width='425' height='350'></embed></object></span></p>
<p>APOSTILLA I A RECURSIVIDAD<br />
(DE AFUERA HACIA ADENTRO)</p>
<p><strong>Francisco Serradilla</strong></p>
<p>Pensad un universo.<br />
Dentro del universo en un planeta<br />
y dentro del planeta en un país.</p>
<p>Elegid del país una ciudad;<br />
dentro de la ciudad hay una calle<br />
y en la calle una casa.</p>
<p>En una habitación de aquella casa<br />
un hombre está leyendo este poema:</p>
<p>espejos enfrentados, infinito</p>
]]></content:encoded>
</item>

</channel>
</rss>
