c# 简单阶乘程序

本文关键字:程序 阶乘 简单 | 更新日期: 2023-09-27 18:25:33

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

任何帮助都会很棒。

c# 简单阶乘程序

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

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

将结果初始化为

int Result=1;

并按如下方式编写循环

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

你甚至可以使用福尔温

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

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

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

你也宣布了另一个int second = 0;——不明白你为什么要这么说。

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

您应该运行循环并尝试计算结果的值是多少,并且每次迭代中的 NewUserNumber 是什么。

祝你好运。。。

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

int Factorial(int input({ 整数答案 = 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;

}

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