Programación recursiva fácil explicada con 3 ejemplos, C# .Net, recorrido arreglos, suma, dibujar árbol

En este video te enseñare como se programa recursivamente, te mostrare 3 ejemplos con los cuales comprenderás esta forma de programar rápidamente.

Código fuente


using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Recursividad
{
    class Program
    {
        static void Main(string[] args)
        {
            //ejemplo 1: recorrer un arreglo
            int[] arregloDeEnteros = new int[] { 2,1,1,1,1,1,2};
            Recorrer(arregloDeEnteros);

            //ejemplo 2: sumar elementos de un arreglo
            int total = Sumar(arregloDeEnteros);

            //ejemplo 3: pintar un arbolito
            Bitmap bmp = new Bitmap(100,100);
            Pintar(bmp,bmp.Width/2,20);

            string path = @"C:\Users\Bioxor\source\repos\Recursividad\Recursividad\arbolito.jpg";
            bmp.Save(path,ImageFormat.Bmp);
        }

        static void Pintar(Bitmap bmp,int x, int n,int y=0)
        {
            if (y < n)
            {
                bmp.SetPixel(x, y, Color.Red);
                Pintar(bmp,x+1,n,y+1);
                Pintar(bmp,x-1,n,y+1);
            }
        }

        static int Sumar(int []arreglo,int posicion=0)
        {
            if (posicion == arreglo.Length)
                return 0;

            return arreglo[posicion] + Sumar(arreglo, posicion+1);
        }

        static void Recorrer(int [] arreglo,int posicion=0)
        {
            if (posicion == arreglo.Length)
                return;

            Console.WriteLine(arreglo[posicion]);
            Recorrer(arreglo,posicion+1);
        }

     

    }
}


¿Cómo obtener la diferencia en minutos de dos fechas en mysql? TIMESTAMPDIFF

Para obtener la diferencia en minutos de dos fechas en mysql existe la función TIMESTAMPDIFF la cual nos ayuda a realizar la resta.

Esta función también nos permite obtener otros valores como hora, días, segundos etc.

Se utiliza de la siguiente forma:


select TIMESTAMPDIFF(MINUTE,fechaInicial,fechaFinal) as minutos from MiTabla

¿Cómo utilizar un try y catch dentro de una consulta LINQ? Excepción | Exception C# VB .Net

Para poder cachar excepciones dentro de una consulta LINQ y poder manipular el error para que no truene la consulta en si misma debemos hacer uso de Lambda, esto es útil cuando nuestra base de datos puede presentar inconsistencias las cuales pueden ocasionar una excepción en ciertos casos, y podemos evitarlo de la siguiente forma:


EntityDB db= new EntityDB();
var lst = from d in db.tabla.ToList() //es importante hacerlo lista
                  select new TablaViewModel
                  {
                      id = d.id,
                      //campo es string por lo cual
                      //nuestra función delegada regresara igual string
                      campo = (new Func<string>(() => {
                                                            try {
                                                             // suponiendo que exista una referencia
                                                             // a una tabla secundaria la cual no siempre exista
                                                             // lo cual puede ocasionar una excepción
                                                             // de esta manera lo podemos manipular
                                                                 return d.tablaSecundaria.campo2;
                                                                 }
                                                            catch { return "No existe"; }
                                                        }
                                                  )
                                 )()
                  };

De esta manera nuestra consulta no tronara y podemos darle un resultado a la vista donde mostraremos nuestros datos.