Hola:
He hecho esto. Porque controla que no haya recursividad sin darme cuenta y funciona.
Código:
using System;
namespace Pila_de_llamadas_Consola_03
{
internal class Program
{
// Contador para controlar la recursividad.
private static int contador = 0;
static void e()
{
if (contador < 1) // Limita las llamadas recursivas.
{
contador++;
a();
}
}
static void d()
{ // Aquí.
}
static void c()
{
}
static void b()
{
c();
d();
e();
}
static void a()
{
b();
}
static void Main(string[] args)
{
a();
Console.WriteLine("Fin de programa.");
// Pulse cualquier tecla para salir.
Console.ReadKey();
}
}
}
Funcione para este ejemplo de arriba, pero no para lo que estoy haciendo.
En lo que comentas.
Cita:
|
En lugar de llamar de unas a otras, puedes regresar con un parámetro a la principal e indicando en ese parámetro a cuál debe ir.
|
Por lo que veo, no debo llamar a un void a otro void o funciones. Debo terminar ese void o función primero solo para que quite la pila en memoria. Luego como dices, indicar a donde quiero ir, es decir, llamar a otro void, pero este ya estará limpio y no se me queda almacenado sin darme cuenta.
Iba a usar los
goto que no usa pila de llamadas en ningún momento, todo el mundo me dicen, prohibido usar goto, porque así evito malas prácticas de programación a cara el futuro.
¿Puedes poner un ejemplo sobre lo que indicas?
Gracias.