读书人

关于设计阶乘计算器有关问题

发布时间: 2012-10-18 13:46:55 作者: rapoo

关于设计阶乘计算器问题
为什么我用下面的代码,每次只计算前面两个就完事了。比如我要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--)

读书人网 >C#

热点推荐