关于设计阶乘计算器问题
为什么我用下面的代码,每次只计算前面两个就完事了。比如我要10的阶乘,每次只能输出90的结果,求教。
- C# code
protected void Button2_Click(object sender, EventArgs e) { int factNumber = int.Parse(TextBox3.Text); int i = 1; for (i = factNumber * (factNumber - 1); factNumber > 1; factNumber--) { Label2.Text = i.ToString(); } }
[解决办法]
阶乘,递归实现
- C# code
public long foo(long factNumber) { if (factNumber > 1) { return factNumber * foo(factNumber - 1); } return factNumber; }
[解决办法]
int溢出了,有什么好大惊小怪的。
[解决办法]
就LZ的代码来说
1.i需要参与到迭代中,所以 i = factNumber * (factNumber - 1) 应该为 i = i * factNumber
2.for语句的初始化代码只执行一次,所以迭代应当移至第三部分
稍微修改后的for语句应该是
for (int i = 1; factNumber >= 1; i = i * factNumber--)