为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C# C
HUWWW 2022-06-01 11:07:36
s=1!-2!+3!-4!...+19!-20!1!=1x12!=2x13!=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();
查看完整描述

1 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

这里重点其实在于求阶乘,我写了一个函数,用于求阶乘,如下:
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


查看完整回答
反对 回复 2022-06-06
  • 1 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信