Recursividad
Hacer uso de recursividad, tomando como
base el uso de funciones y procedimientos.
Introducción
Un
problema complejo se puede dividir en pequeños subproblemas más sencillos.
Estos subproblemas se conocen como módulos y su
implementación en un lenguaje se llama subprograma (procedimientos y
funciones).
Un
subprograma realiza las mismas acciones que un programa, sin embargo, vamos a
utilizar el subprograma o módulo para una acción u operación específica.
Un
subprograma recibe datos de un programa y le devuelve resultados (el programa
“llama” o “invoca” al subprograma, éste ejecuta una tarea específica y devuelve
el “control” al programa que lo llamó).
En C# a las funciones o procedimientos se
le conocen con el nombre de métodos.
Funciones (Retornan un valor)
En
el ámbito de la programación, una función es un tipo de subalgoritmo, es el
término para describir una secuencia de órdenes que hacen una tarea específica
de una aplicación más grande. Las declaraciones de las funciones, generalmente
son especificadas por:
- Un nombre único en el ámbito. Nombre de la función con el que se identifica y se distingue de otras. No podrá ser otra función o procedimiento con ese nombre (salvo sobrecarga o polimorfismo en programación orientada a objetos).
- Un tipo de dato de retorno. Tipo de dato del valor que la función devolverá al terminar su ejecución.
- Una lista de parámetros. Especificación del conjunto de argumentos (pueden ser cero uno o más) que la función debe recibir para realizar su tarea.
Procedimientos
(No retornan valor)
Fragmento de código (subprograma) que
realiza una tarea específica y es relativamente independiente del resto del
código. Los procedimientos suelen utilizarse para reducir la duplicación de
códigos en un programa.
Los
procedimientos pueden recibir parámetros, pero no necesitan devolver un valor
como es el caso de las funciones.
Sintaxis Función.
Modificador_de_acceso
Tipo_Devuelto Nombre_Función(tipo(s)_argunmento(s) nombres)
{
//declaración de datos y
cuerpo de la función.
return (valor)
}
Sintaxis Procedimiento
Modificador_de_acceso
void Nombre_procedimiento(tipo(s)_argunmento(s) nombres)
{
//declaración de datos y
cuerpo de la función.
}
Recursividad
Una función recursiva es una función que se llama a sí
misma directa o indirectamente. La recursividad o recursividad
directa es el proceso por el que una función se llama a sí misma desde el
propio cuerpo de la función. La recursividad indirecta implica más de
una función.
La recursividad indirecta implica, por
ejemplo, la existencia de dos funciones: uno() y dos(). Suponga que la función
principal llama a uno() –una segunda llamada a uno()-. Esta acción es recursión
indirecta, pero es recursiva, ya que uno() ha sido llamado dos veces, sin
retornar ninguna su llamada.
Un
proceso recursivo debe tener una condición de terminación, ya que de lo
contrario va a continuar indefinidamente.
Un
algoritmo típico que conduce a una implementación recursiva es el cálculo del factorial
de un número.
El
factorial de n (n!).
n!
= n*(n-1)*(n-2)*…*3*2*1
Ejemplo1 Suma:
En
nuestro primer ejemplo, vamos a implementar un procedimiento que
sea capaz de realizar una simple suma. Esta sencilla implementación es
con el objetivo de conocer la sintaxis y la lógica de los procedimientos.
using System;
namespace Suma
{
class Program
{
static void Main(string[] args)
{
Console.Title = "Trabajando con Funciones";
// llamando a la funcion suma
suma();
Console.ReadKey();
}
static void suma()
{
Double r, n1, n2;
Console.WriteLine("Digitar primera cantidad");
n1 = Double.Parse(Console.ReadLine());
Console.WriteLine("Digitar segunda cantidad");
n2 = Double.Parse(Console.ReadLine());
r = n1 + n2;
Console.WriteLine("El resultado de la suma es: " + r);
}
}
}
Corrida
del programa:
......
No hay comentarios.