计算C#中的阶乘

时间:2011-09-03 04:48:46

标签: c#

我正在尝试编写一个程序,该程序将获取用户输入值并询问他们是否要计算数字1到n或n的阶乘值! 这就是我到目前为止所拥有的

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

namespace Project_2_Part_B
{
    class Program
    {
        static void Main(string[] args)
        {                
             var Fkeylow = "f";
             var FkeyCap = "F";
             var Skeylow="s";
             var SkeyCap="S";
             int n = 0;
             long factorial = n;

             Console.WriteLine("Input a value n");
             n = Convert.ToInt32(Console.ReadLine());

             Console.WriteLine("Do you want to calculate factorial or sum");
             Console.WriteLine("Enter F or S");

             var A = Console.ReadLine();

             if (A == Fkeylow)
                 Console.WriteLine();

             if (A == FkeyCap)
                 Console.WriteLine();

             var B=Console.ReadLine();

             if (B == Skeylow)
                 Console.WriteLine();

             if (B == SkeyCap)
                 Console.WriteLine();

             Console.WriteLine("Press any key to close...");
             Console.ReadLine();
         }
     }
}

我的问题是使用计算的语法使代码执行n *(n-1)而n> 1 任何帮助将不胜感激。先谢谢你了!

3 个答案:

答案 0 :(得分:1)

static void Main(string[] args)
{
Console.WriteLine("Input a value n");
string number = Console.ReadLine(); // read number
int n = Convert.ToInt32(number); // converting to int

Console.WriteLine("Do you want to calculate factorial or sum");
Console.WriteLine("Enter F or S");
string choose = Console.ReadLine(); // F or S

int result = -1; // to view later

if (choose == "f" || choose == "F")
{
 result = 1;
 for (int i = n; i >= 1; i--) // loop for calculating factorial
   result *= i;
}
else if (choose == "s" || choose == "S")
{
 result = 0;
 for (int i = n; i >= 1; i--) // loop for calculating sum
   result += i;
}

Console.WriteLine(result); // printing answer

Console.WriteLine("Press any key to close...");
Console.ReadLine();
}

如果答案对您有帮助,请不要忘记将其标记为最佳答案。

答案 1 :(得分:0)

使用递归是另一种方法:

 static void Main(string[] args)
 {
        int n = 5;
        Console.WriteLine(factorial(n));
        Console.WriteLine(sum(n));
        Console.Read();
 }

 public static int sum(int n)
 {
     if(n==0)
        return 0;
     return n+sum(n-1);
 }
 public static int factorial(int n)
 {
    if (n == 1)
       return 1;
    return n * factorial(n - 1);
 }

打印:

120 -->5!
15  -->1+2+3+4+5

答案 2 :(得分:0)

基本解决方案在这里,经过测试,

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

namespace ConsoleApplication50
{
    class Program
    {
        static void Main(string[] args)
        {
            NumberManipulator manipulator = new NumberManipulator();
            Console.WriteLine("Factorial of six is :" + manipulator.factorial(16));
            Console.ReadLine();
        }
    }
class NumberManipulator
{
    public int factorial(int num)
    {
        int result=1;
        int b = 1;
        do
        {
            result = result * b;//fact has the value 1  as constant and fact into b will be save in fact to multiply again. 
            Console.WriteLine(result);
            b++;
        } while (num >= b);
        return result;
    }
  }
}