C#阶乘计算1!-2!+3!-4!...求前20项和

s=1!-2!+3!-4!...+19!-20!

1!=1x1
2!=2x1
3!=3x2x1
……

要最简单的c#代码~ 就比如
int s; 要for循环的那种 别弄那种很难的!我们才是入门!

下面的是我自己做的,但是我想肯定错了 只是格式是这样的!
急!!! 明天上课要讲的

我简单说明一下我定义的变量
i循环变量 s前20项和 t到第几项时的值 a就是改变符号的~
(我是初学者啦~ 对这个不熟 有些说错了别笑话我t-t)

int i, t=1, s = 0, a = 1;
for (i = 1; i <= 20; i++)
{
t = a * i;
s = s + t;
a = a * (-1);

}

label1.Text = s.ToString();

我这个算出来才-10 那是肯定不对的,最后面是 减去20! 想想得多大一个负数了。。 也许int 还不够吧- -
int i, t=1, s = 0, a = 1;
for (i = 1; i <= 20; i++)
{
t = t*(a * i);
s = s + t;
a = a * (-1);

}

label1.Text = s.ToString();

我改成这样了, 算出来等于-513022711 对不对? c#里面数的阶乘怎么表示?

第1个回答  2009-10-20
这里重点其实在于求阶乘,我写了一个函数,用于求阶乘,如下:
public long GetJC(int a)
{
if (a == 0 || a == 1)
{
return 1;
}
else
{
return a*GetJC(a-1);
}
}
然后,你的题是:s=1!-2!+3!-4!...+19!-20!
只要阶乘解决了,这个问题就OK了,下面是这道题的解决办法,我是将结果放在文本框中的,你可以根据自己的需要修改:
private void button2_Click(object sender, EventArgs e)
{
double results = 0;
for (int i = 1; i <= 20; i++)
{
results = results + Math.Pow((-1), (i - 1)) * GetJC(i);
}
textBox1.Text = Convert.ToString(results);
}
结果是很大的,结果为:-2.31732329055462E+18
不要被吓到,呵呵!祝你学习愉快!本回答被提问者采纳