0
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 中做到这一点,但转换对我来说是..

任何帮助都会很棒。

4

8 回答 8

7

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

result = NewUserNumber * (NewUserNumber - 1);
于 2013-07-31T09:15:09.913 回答
1
            while (NewUserNumber > 1)
            {
                result = result * NewUserNumber;
                NewUserNumber--;
            }
于 2013-07-31T11:05:38.573 回答
0

将结果初始化为

int Result=1;

并编写for循环如下

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

或者

你甚至可以使用以下

public int Factorial(int num)
{
  if(num==1)
     return 1;
  return num * Factorial(num-1);
}
于 2013-07-31T09:16:38.770 回答
0

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

    while (NewUserNumber >= 1) 
    {

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

您还宣布了另一个int second = 0; - 不明白您为什么要宣布这一点。

于 2013-07-31T09:18:25.940 回答
0

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

您应该遍历循环并尝试计算每次迭代中 result 和 NewUserNumber 的值是多少。

祝你好运...

于 2013-07-31T09:21:35.540 回答
0

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

于 2013-07-31T10:20:13.533 回答
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;

}

于 2013-11-06T16:54:52.910 回答
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();
    }
于 2014-09-13T08:18:59.010 回答