c#SIMPLE因子程序

时间:2013-07-31 09:12:54

标签: c# factorial

private void button1_Click(object sender, EventArgs e)
{
        String UserNumber = this.textBox1.Text;
        int NewUserNumber = Convert.ToInt32(UserNumber);
        int result = 0;
        int second = 0;

        while (NewUserNumber >= 1) 
        {

            result = NewUserNumber * (NewUserNumber - 1);
            NewUserNumber--;
        }
        String i = Convert.ToString(result);
        this.textBox2.Text = i;
    }
}

虽然我明白这是我的功课,但我被困住了。我真的不想让这个解决,我想自己做。

我不明白为什么它不起作用。无论我输入什么,它都会输出2。

我可以很容易地用Java做到这一点,但转换到了我......

任何帮助都会很棒。

8 个答案:

答案 0 :(得分:7)

您的问题不在转化中。请看

result = NewUserNumber * (NewUserNumber - 1);

答案 1 :(得分:1)

            while (NewUserNumber > 1)
            {
                result = result * NewUserNumber;
                NewUserNumber--;
            }

答案 2 :(得分:0)

将结果初始化为

int Result=1;

并写入循环如下

while (NewUserNumber >= 1) 
{
   result = result * NewUserNumber;
   NewUserNumber--;
}

OR

你甚至可以使用下面的

public int Factorial(int num)
{
  if(num==1)
     return 1;
  return num * Factorial(num-1);
}

答案 3 :(得分:0)

您需要查看while循环结构以及如何在其外部设置结果值和乘法

    while (NewUserNumber >= 1) 
    {

        result = NewUserNumber * (NewUserNumber - 1);
        NewUserNumber--;
    }
    String i = Convert.ToString(result);

此外,您已宣布另一个int second = 0; - 不明白为什么要宣布这一点。

答案 4 :(得分:0)

我的建议是尝试使用不同的输入手动运行代码。

你应该遍历循环并尝试计算每次迭代中结果的值和NewUserNumber的值。

祝你好运......

答案 5 :(得分:0)

您应该尝试在代码上运行调试器,然后逐步使用监视窗口。这很容易做,并且会准确显示每个点的每个值(您设置断点)。你在用什么IDE?

答案 6 :(得分:0)

int Factorial(int input) {     int answer = 0;

if (input > 0)
{
    count = 1;
    while (count <= input)
    {
        if (count == 1)
        {
            answer= 1;
            count++;
        }
        else
        {
            answer = count * answer;
            count++;
        }
    }
}
else
{
    MessageBox.Show("Please enter only a positive integer.");
}

return answer;

}

答案 7 :(得分:0)

    static void Main(string[] args)
    {
        int number, fact;
        Console.WriteLine("enter the number for geting factorial");
        number = Convert.ToInt32(Console.ReadLine());
        fact = number;
        for (int i = fact - 1; i > 0; i--)
        {
            fact = fact * i;
        }
        Console.WriteLine(fact);
        Console.ReadLine();
    }