TRANFORMAR ALGORITMOS RECURSIVOS A ITERATIVOS

El concepto de recursividad va ligado al de repetición. Son recursivos aquellos algoritmos que, estando encapsulados dentro de una función, son llamados desde ella misma una y otra vez, en contraposición a los algoritmos iterativos, que hacen uso de ciclos while, do-while, for, etc.

Algo es recursivo si se define en términos de sí mismo (cuando para definirse hace mención a sí mismo). Para que una definición recursiva sea válida, la referencia a sí misma debe ser relativamente más sencilla que el caso considerado.

Ejemplo: definición de nº natural:

→ el N º 0 es natural

→ El Nº n es natural si n-1 lo es.

En un algoritmo recursivo distinguimos como mínimo 2 partes:

a). Caso trivial, base o de fin de recursión:

Es un caso donde el problema puede resolverse sin tener que hacer uso de una nueva llamada a sí mismo. Evita la continuación indefinida de las partes recursivas.

b). Parte puramente recursiva:

Relaciona el resultado del algoritmo con resultados de casos más simples. Se hacen nuevas llamadas a la función, pero están más próximas al caso base.

CODIGO RECURSIVO


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
       class cap_recursivo
        {
 
       public float capital(float m, int n, float x)
        {
            if (n == 0)
            { return m; }
            else
            { return capital(m, n - 1, x) * (1 + (x/100)); }

        }
    
    } 
        
        public Form1()
        {
            InitializeComponent();
        
        private void Form1_Load(object sender, EventArgs e)
          {

          }

        private void button1_Click(object sender, EventArgs e)
        
        {

             cap sayo = new cap();
            

            label4.Text = int.Parse(sayo.capital());

         }

        private void label4_Click(object sender, EventArgs e)
        {


        }
    }
}

DISEÑO

:estructura_datos_csharp:1.jpg CODIGO ITERATIVO


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication7
{
    public partial class Form1 : Form
    {
        class cap
        {
            public float capital(float m, int n, float x)
            {
                if (n == 0)
                { return m; }
                else
                {
                    //x = x / 100;float inn;
                    //x = x * m;
                    x = x / 100;

                    for (int b = n; b > 0; b--)
                    {
                        m = m + (x * m);
                        //m = x + m;
                        //n = n - 1;(m ) + 
                    }
                } return m;

                //return capital(m, n - 1, x) * (1 + (x / 100)); }

            }
        }
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            cap sayo = new cap();
            

            label4.Text = int.Parse(sayo.capital());

        }

        private void label4_Click(object sender, EventArgs e)
        {
            

        }
    }
}

DISEÑO :estructura_datos_csharp:1.jpg EXPLICACION

este programa lo que hace es calcular el interes de un monto inicial de acuerdo a cuanto se pidio prestado, a cuanto porcentaje de interes y el tiempo por el que fue prestado. Al pasar el primer año, se calcula el monto inicial + interes = monto total, y al segundo año o mas se calcula el monto total + interes y asi sucesivamente hasta terminar el periodo del prestamo. la forma recursiva se vuelve a llamar, osea que vuelve a hacer el procedimiento dentro de si misma, y la iteraria es de forma seguida y larga. No importa si va primero o despues, los dos tipos llegan al mismo objetivo, son dos diferentes metodos de hacer la misma accion. El recursivo manda a llamar la misma funcion dentro de si misma y iterativo hace todo el trabajo seguido.

 




Google
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki
Politica de Privacidad