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做到这一点,但转换到了我......
任何帮助都会很棒。
答案 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();
}