日期:2014-05-17 浏览次数:21085 次
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(); } }
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--)