2010-01-22 46 views
0

我在這裏有一個邏輯問題。我想添加階乘值的結果,但我不確定如何添加它們。這是我的代碼:如何添加階乘值的結果?

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

我不太明白你的問題。你正試圖計算'1/1! + 2/2! + 3/3! + ... + 7/7!'? – stakx 2010-01-22 17:12:43

+1

我看到答案已經發布,所以我只是想說,你不應該使用雙打進行階乘計算。如果你想計算更大的階乘,堅持用整數或長整數。 – Aaron 2010-01-22 17:14:53

+0

Task_8_Set_III < - 有趣的命名空間。家庭作業還是帶回家考試? – Hogan 2010-01-22 17:15:19

回答

1

不知道這是你的意思,但如果對於N個因子你想擁有所有階乘的總和達到該值,這是你怎麼做。

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

這將不會返回階乘的總和......這是返回(我/我!)的總和......除非這是OP最初的目標...... – Aaron 2010-01-22 17:21:34

+0

真的大聲笑,但這是prob他們需要的,否則行'Console.WriteLine(「Factorial:」+ c);'也是錯誤的。 – rui 2010-01-22 17:35:49

1

您需要添加一個總變量來跟蹤總和。

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

我不太明白「c = i/fact(i)」....如果c是階乘計算,它不應該只是「c =其實(我)「? – Aaron 2010-01-22 17:18:20

+0

這是OP的東西......我只是要離開它。 – jjnguy 2010-01-22 17:18:48

+0

問題是..我想總結(1/1!)+(2/2!)+ ...(7/7!).. – Abid 2010-01-22 17:29:09

0

短的完全理解你想要做的完全是,這裏有什麼兩樣東西......

    編程
  • ,下面的表達式是完全有效的: i = i + 1說:「我的新值「我的舊值加上一個」
  • 變量存在於範圍內,它們的邊界通常是大括號{ },也就是說,爲了「記住」以前迭代的內容,您需要一個位於foreach括號之外的變量。
+0

更具體地說,您提到的第一點對*大多數*編程語言有效。但是,在函數式編程中'i = i + 1'可能不那麼容許。 – stakx 2010-01-22 17:17:28

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))); 
       } 
      }