//Constructor public PseudoFractal() { //Instance ID ID = count++; //Variable num = 1; //Por defecto, el objeto no contiene instancias internas. inner = null; //Guardar el HashCode Hash = GetHashCode(); //Guardar el Memory Address Address = MemoryAddress(); }
//Método para calcular la suma de toda la estructura recursiva. public int TotalSum(int res, PseudoFractal instance) { //Caso base //Si es null, la instancia ya no contiene más instancias if (instance.inner == null) { return(res += instance.num); } else { //Sumamos el num de la instancia res += instance.num; //Pasamos la instancia interna a la próxima llamada recursiva PseudoFractal iteration = instance.inner; return(TotalSum(res, iteration)); } }
//Función recursiva para construir objetos pseudofractales a profundidad n. private PseudoFractal RecursiveBuild(int n, PseudoFractal instance) { if (n == 1) { return(instance); } else { //Creamos un objeto en cada iteración PseudoFractal iteration = new PseudoFractal(); //Llamada recursiva. //Asociamos recursivamente cada objeto al de la iteración anterior //El resultado es un conjunto de objetos con referencias al siguiente //Se puede imaginar como anidados uno dentro del otro. instance.inner = RecursiveBuild(n - 1, iteration); } return(instance); }