2010-01-22 13 views
0

J'ai un problème de logique ici. Je veux ajouter le résultat des valeurs factorielles mais je ne suis pas sûr de savoir comment les ajouter. Voici mon code:Comment ajouter le résultat des valeurs factorielles?

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

namespace Task_8_Set_III 
{ 
    class Program      
    { 
     static void Main(string[] args) 
     { 
      for (int i = 1; i <= 7; i++) 
      { 
       double c = i/fact(i); 

       Console.WriteLine("Factorial is : " + c); 
       Console.ReadLine(); 
       Console.WriteLine("By Adding.. will give " +); 

      } 
     } 
     static double fact(double value) 
     { 
      if (value ==1) 
      { 
       return 1; 
      } 
      else 
      { 
       return (value * (fact(value - 1))); 
      } 
     } 
    } 
} 
+0

Je ne comprends pas très bien votre problème. Essayez-vous de calculer '1/1! + 2/2! + 3/3! + ... + 7/7! '? – stakx

+1

Je vois que les réponses ont déjà été postées, donc je voulais juste dire que vous ne devriez pas utiliser les doubles pour les calculs factoriels. Stick avec des entiers ou des longs si vous voulez calculer des factorielles plus grandes. – Aaron

+0

Task_8_Set_III <- espace de noms intéressant. Devoirs ou examen à la maison? – Hogan

Répondre

1

Je ne sais pas si c'est ce que vous vouliez dire, mais si pour factoriel de N vous voulez avoir la somme de tous factorielles jusqu'à cette valeur est ce que vous le faites.

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

namespace Task_8_Set_III 
{ 
    class Program      
    { 
     static void Main(string[] args) 
     { 
      double sum = 0; 
      for (int i = 1; i <= 7; i++) 
      { 
       double c = i/fact(i); 
       sum += c; 
       Console.WriteLine("Factorial is : " + c); 
       Console.ReadLine(); 
       Console.WriteLine("By Adding.. will give " + sum); 

      } 
     } 
     static double fact(double value) 
     { 
      if (value ==1) 
      { 
       return 1; 
      } 
      else 
      { 
       return (value * (fact(value - 1))); 
      } 
     } 
    } 
} 
+1

Cela ne retournera pas la somme des factorielles ... c'est renvoyer la somme de (i/i!) ... sauf si c'est ce que l'OP avait initialement prévu ... – Aaron

+0

Vraie lol, mais c'est probablement ce dont ils ont besoin sinon le line 'Console.WriteLine (" Factoriel est: "+ c);' est également faux. – rui

1

Vous devez ajouter une variable totale pour suivre la somme.

double total = 0; //the total 

for (int i = 1; i <= 7; i++) 
{ 
    double c = i/fact(i); 
    total += c; // build up the value each time 
    Console.WriteLine("Factorial is : " + c); 
    Console.ReadLine(); 
    Console.WriteLine("By Adding.. will give " + total); 

} 
+0

Je ne comprends pas très bien "c = i/fait (i)" .... si c est le calcul factoriel, ne devrait-il pas être simplement "c = fait (i) "? – Aaron

+0

c'est ce que l'OP avait ... J'allais juste le laisser. – jjnguy

+0

la question était que .. je voulais sommer (1/1!) + (2/2!) + ... (7/7!) .. – Abid

0

courte de comprendre tout à fait ce que vous voulez faire exactement, voici deux choses ...

  • dans la programmation, l'expression suivante est parfaitement valable: i = i + 1 Disant « la nouvelle valeur de i est l'ancienne valeur de i plus un "
  • variables vivent dans des étendues, leurs limites étant habituellement des accolades { }, c'est-à-dire que vous aurez besoin d'une variable qui est en dehors des accolades pour vous" souvenir "des choses de l'itération précédente.
+0

Plus précisément, le premier point que vous mentionnez est valable pour * la plupart * des langages de programmation. Cependant, 'i = i + 1' pourrait ne pas être autorisé dans la programmation fonctionnelle. – stakx

0
static void Main(string[] args) 
      { 
       int sum = 0; 
       for (int i = 1; i <= 7; i++) 
       { 
        int c = fact(i); 
        sum += c; 
        Console.WriteLine("Factorial is : " + c); 
        Console.ReadLine(); 
        Console.WriteLine("By Adding.. will give " + sum); 

       } 
      } 
      static int fact(int value) 
      { 
       if (value ==1) 
       { 
        return 1; 
       } 
       else 
       { 
        return (value * (fact(value - 1))); 
       } 
      }