Comunidad Underground Hispana  
Visita: Descargas - Foro de juegos - Articulos - Juegos Gratis - Download Free

Retroceder   Comunidad Underground Hispana > Programacion > Carbide C/C#/C++

Tema Cerrado Crear Nuevo Tema
 
Share LinkBack Herramientas Desplegado
Antiguo 27-ene-2010, 09:53   #1
Member
 
Fecha de Ingreso: marzo-2009
Mensajes: 44
Predeterminado [Solucionado] [C#] Problema función factorial

Hola a todos, qué hay de malo en el siguiente código?:

Código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication8
{
    class Program
    {
        int n;
        int factorial;

        public static void Main(string[] args)
        {
            Console.WriteLine("Ingrese un número para calcular su factorial");
            n = int.Parse(Console.ReadLine());
            Console.ReadLine();
            int resultado = sumar(n);

        }

            double sumar(int n)

{

 if (n == 0)
            {
                factorial = 1;
            }
            else
            {
                factorial = n*factorial(n - 1);
                return factorial;

        }

}

    }
    }
Intento calcular el factorial recursivamente pero no me funciona,


Muchas gracias

Última edición por Fashion; 27-ene-2010 a las 11:17 Razón: NORMAS DEL FORO - ART. 1 y 6
Dogod está desconectado  
Antiguo 27-ene-2010, 11:07   #2
Moderador
 
Avatar de Fashion
 
Fecha de Ingreso: junio-2007
Mensajes: 1.753
Predeterminado

Cita:
Iniciado por Dogod Ver Mensaje
Hola a todos, qué hay de malo en el siguiente código?:

Código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication8
{
    class Program
    {
        int n;
        int factorial;

        public static void Main(string[] args)
        {
            Console.WriteLine("Ingrese un número para calcular su factorial");
            n = int.Parse(Console.ReadLine());
            Console.ReadLine();
            int resultado = sumar(n);

        }

            double sumar(int n)

{

 if (n == 0)
            {
                factorial = 1;
            }
            else
            {
                factorial = n*factorial(n - 1);
                return factorial;

        }

}

    }
    }
Intento calcular el factorial recursivamente pero no me funciona,


Muchas gracias
Se ha comentado los errores:

Código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication8

{
    class Program
    {
        //int n;
        //int factorial;  

        //public double sumar(int n)
        public static int sumar(int n)
        {            
            if (n == 0)         
                //factorial = 1;
                return 1;            
            else            
                //factorial = n*factorial(n - 1);
                return n * sumar(n - 1);
        }

        static void Main(string[] args)
        {
            int n;
            Console.WriteLine("Ingrese un número para calcular su factorial");
            n = int.Parse(Console.ReadLine());            
            //int resultado = sumar(n);
            Console.WriteLine("Factorial: " + sumar(n));
            Console.ReadLine();
        }
    }
}
__________________
Fashion está desconectado  
Antiguo 27-ene-2010, 19:33   #3
Senior Member
 
Fecha de Ingreso: marzo-2007
Mensajes: 474
Predeterminado

Primer error así al sondeo rápido.
¿Por qué si calcula factorial, la función se llama sumar?, es más... en la operación factorial no interviene para nada la suma.....

Ahora, lee bien el manual de tu lenguaje. Lo que tu haz hecho es crear un método para la clase Program, es decir que necesariamente debes crear un objeto Program y enviarle el mensaje.
Código:
using ... // ganzadas que le gusta a C#

namspace UnNamespace  // ganzada que pone Visual Studio
{
    class Program
    {
         // Variables de instancia y toda la bola  
         // .............

          public static void Main()
          {
               Program p = new Program(); // crear el objeto program
               p.factorial(10);  // Enviar el mensaje factorial al objeto p
          }

           public int factorial(int nro)
           {
                  // codigo de factorial.. creo que está bien y no tengo ganas de pensar
           }
    }
}
Así es cómo tu planteas la solución. Ahora, como no es necesario que sea un método de objeto (un mensaje) sino que puede ser un método de clase, es lo que Fashion te marca como corregir el error:
Código:
// bla bla bla toda habladuría anterior
    public static int factorial(int factoria)
    {
    }
ajr784 está desconectado  
Antiguo 30-ene-2010, 18:10   #4
Member
 
Fecha de Ingreso: marzo-2009
Mensajes: 44
Predeterminado

Lo he resuelto. Pero gracias.
Dogod está desconectado  
Tema Cerrado

Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado
Trackbacks están Activado
Pingbacks están Activado
Refbacks están Activado



La franja horaria es GMT -5. Ahora son las 00:29.



Juegos gratis Underground Mexico Veo Descargas Songs Traducidas Videos De Musica Conservacion Tabs Metal
Noticias
 Juegos De Coche juegos gratis online juegos Utilidades Trucos
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.3.2
Traducción por vBHispano.com