Recursividad c#

Iniciado por Dawman, 3 Mayo 2013, 16:19 PM

0 Miembros y 1 Visitante están viendo este tema.

Dawman

Escribe una acción recursiva en c# que escriba los dígitos enter n (n>0) en el mismo orden pero, separados por en espacio.
por ejemplo: si n=8956, hay que devolver 8 9 5 6

Alguna ayudita???

Dawman

Es urgente!! lo necesito para esta noche!!

cypascal

¿Pero si mañana es domingo?
Problemas interesantes de programación en C/C++ y Pascal en:
BLOG C/C++


WWW.CYPASCAL.BLOGSPOT.COM.ES

$Edu$

No se hacen tareas aca, asi que podrias dejarnos tu intento o tu idea. Yo la verdad que pensandolo solamente no doy con la solucion, porque nunca en mi vida haria eso recursivamente, no es necesario, pero se ve que te lo ha pedido un profesor de esos que odias todo el año xD

Dawman

Yo he puesto esto, el problema es q me invierte el numero!!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ex1_recurs
{
    class Program
    {
        static int separar(int num)
        {
            Console.Write((num %10) + " ");
            if (num / 10 == 0) return num;
           
            else return separar(num/10);
       
        }
        static void Main(string[] args)
        {
            int num;
            Console.WriteLine("Escriu un numero");
            num = Convert.ToInt32(Console.ReadLine());
            while(num<0)
                    {
                         Console.WriteLine("Escriu un numero");
                         num = Convert.ToInt32(Console.ReadLine());
                    }
                   
            separar(num);
            Console.WriteLine();
            Console.ReadKey();
        }
    }
}

Dawman

Cita de: cypascal en  4 Mayo 2013, 13:55 PM
¿Pero si mañana es domingo?

Hay que entragarlo via Moodel esta noche!!

Dawman

Cita de: $Edu$ en  4 Mayo 2013, 14:39 PM
No se hacen tareas aca, asi que podrias dejarnos tu intento o tu idea. Yo la verdad que pensandolo solamente no doy con la solucion, porque nunca en mi vida haria eso recursivamente, no es necesario, pero se ve que te lo ha pedido un profesor de esos que odias todo el año xD

NO TRATABA DE QUE ME HAGAN LAS TAREAS, BUSCABA AYUDA QUE AQUI NO HE ENCONTRADO... PERO AUNQUE ME COSTO 2 DIAS DAR CON LA SOLUCIÓN, LO HICE YO MISMO!!!
ESTA ES UNA SOLUCION... SE PUEDE OPTIMIZAR!!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ex1_recurs
{
    class Program
    {       
       
        static int separar(int num3)
        {
            Console.Write((num3 % 10) + " ");
            if (num3 / 10 == 0) return num3;

            else return separar(num3 / 10);
        }

        static void Main(string[] args)
        {
            int num;
            Console.WriteLine("Escriu un numero");
            num = Convert.ToInt32(Console.ReadLine());
            while(num<0)
                    {
                         Console.WriteLine("Escriu un numero");
                         num = Convert.ToInt32(Console.ReadLine());
                    }
                   
            String num2 = "";
            String aux = "";
            String nbre = Convert.ToString(num);           
            for (int j = nbre.Length - 1; j >= 0; j--)
            {
                aux = Convert.ToString(nbre[j]);
                num2 = num2 + aux;
            }
           
            int num3 = Convert.ToInt32(num2);
            separar(num3);
            Console.WriteLine();
           
        }
    }
}

$Edu$

  Console.WriteLine("Escriu un numero");
            num = Convert.ToInt32(Console.ReadLine());
            while(num<0)
                    {
                         Console.WriteLine("Escriu un numero");
                         num = Convert.ToInt32(Console.ReadLine());
                    }

Eso lo puedes cambiar, usando Do-While.

DarK_FirefoX

Te los devolvia al reves, porque la recursividad funciona como un Stack (pila) donde la primera llamada que se haga se devuelve de ultima, asi que ya sabes, utiliza una cola (Queue), para devolverlos bien. No obstante. Me parece que ese ejercicio es un poco BOBO para hacerlo recursivamente. Salu2s