n的阶乘,也就是n!
有一说一之前看到这玩意我一度认不出来(数学都还给老师了,麻烦学费退一下谢谢!),后来说是n的阶乘才有了一丝丝的印象(钱不用退了,您收着吧),即
1 * 2 * 3 * …… * n
记得是上中学才接触到这玩意,当时一度怀疑我学这玩意有什么用,生活中仿佛没啥用得着这兄弟的地方,后来事实证明,好像确实没啥用的亚子,感觉仿佛白学了
自己算着仿佛也怪麻烦的,没少在这玩意上边丢分,那就扔给电脑算咯
电脑:
那咋写咧,先使个while循环叭
int main()
{
int i = 2;//1*啥都是1,由他去吧
int ret = 1;
int n;
scanf("%d",&n);
while(i<=n)
{
ret *= i;
i++;
}
printf("%d\n",ret);
return 0;
}
写完之后马上输入个100,让电脑感受感受我的痛,然后。。。
电脑直接罢工可还行,仿佛只能算到30的亚子
那要不再来个for循环吧
int main()
{
int i = 2;
int ret = 1;
int n;
scanf("%d",&n);
for(i=2;i<=n;i++)
{
ret *= i;
}
printf("%d\n",ret);
return 0;
}
接着有有个问题,阶乘相加呢?
求1!+2!+3!+……+10!
那就继续先写一个的计算咯
int main()
{
int i = 1;
int ret = 1;
int n;
scanf("%d", &n);
for (i = 2; i <= n; i++)
{
ret *= i;
}
printf("%d\n", ret);
return 0;
}
ctrl+c+v真好用
接着再写一个循环
int main()
{
int n;
long long sum = 0;
for (n=1;n<=10;n++)
{
int i = 1;
int ret = 1;
for (i = 2; i <= n; i++)
{
ret *= i;
}
sum += ret;
}
printf("%lld\n", sum);
return 0;
}
看起来怪麻烦的,如果只用一个循环咧
1 + 1 * 2 + 1 * 2 * 3 + 1 * 2 * 3 * 4……
好像每个都是比前边多了个n
int main()
{
int n;
long long sum = 0;
long long ret = 1;
for (n=2;n<=10;n++)
{
sum += ret;
ret *= n;
}
printf("%lld\n", sum);
return 0;
}
大功告成
然后运行的时候发现了个bug,算的数好像少了一个??
所以应该是这样
{
int n;
long long sum = 0;
long long ret = 1;
for (n = 2; n <= 11; n++)
{
sum += ret;
ret *= n;
}
printf("%lld\n", sum);
return 0;
}