我不会
2条回答 默认 最新
- 小公鸡卡哇伊呀~ 2021-10-06 13:22关注
20! 是个非常大的数字,使用 unsigned long long int 存储整数得到的是不同的值:
#include <stdio.h> unsigned long long factorial(int n) { if (n == 0) return 1; else return (n * factorial(n-1)); } void func() { int i,t=1; double s = 0; for (i=1;i<=20;i++) { t*=i; s += t; } printf("%g",s); } int main() { unsigned long long sum = 0; for (int i = 1; i <= 20; i++) sum += factorial(i); printf("%llu\n", sum); func(); return 0; }
结果是:
2561327494111820313
4.56301e+09
如果数字再大一些,估计得用第三方库了。但是 python 天然就支持任意大的表数范围,如果使用 python,
sum = 0 t = 1 for i in range(1, 21): t *= i sum += t print(sum)
输出结果是 2561327494111820313
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 乌班图ip地址配置及远程SSH
- ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
- ¥15 PSPICE制作一个加法器
- ¥15 javaweb项目无法正常跳转
- ¥15 VMBox虚拟机无法访问
- ¥15 skd显示找不到头文件
- ¥15 机器视觉中图片中长度与真实长度的关系
- ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
- ¥15 java 的protected权限 ,问题在注释里
- ¥15 这个是哪里有问题啊?