C++ 求n!(普通版VS洪荒之力升级版)
来源:互联网 发布:淘宝卖的军粮是真的吗 编辑:程序博客网 时间:2024/05/17 03:11
求n!
1. 普通版(低精度)
#include <iostream>using namespace std;int main(){ int n; int i,sum; while(cin>>n) { sum=1; for(i=1;i<=n;i++) { sum*=i; } cout<<sum<<endl; } return 0;}
**此外,也可以用递归函数完成
#include <iostream>using namespace std;int f(int n);int main(){ int n; while(cin>>n) { if(n==0||n==1) cout<<"1"<<endl; else cout<<f(n)<<endl; } return 0;}int f(int n){ if(n==0 || n==1) return 1; else return n*f(n-1);}此版本程序截图:发现随着n的增大会因精度有限出现错误
2. 洪荒之力升级版(高精度,可突破int自身的限制)
#include <iostream>using namespace std;int main(){ int n; int i,j; int a[100000]; //存运算结果 int p,add; //p存储当前结果的位数,add为进位 while(cin>>n && n>=0) { a[1]=1; //运算结果赋初值1 p=1; //当前结果位数赋初值1 for(i=2;i<=n;i++) //循环与2,3,4.....n相乘 { for(j=1,add=0;j<=p;j++) //让a[]的每位与i相乘,且初始进位为0 { a[j]=a[j]*i+add; add=a[j]/10; //求进位 a[j]%=10; //a[j]取余 } while(add>0) //进位不为0 { a[j]=add%10; add/=10; j++; } p=j-1; //将当前的位数赋给p } for(i=p;i>=2;i--) //a数组的前面是低位,后面是高位 { cout<<a[i]; } cout<<a[i]<<endl; } return 0;}
此版本程序截图:
1 0
- C++ 求n!(普通版VS洪荒之力升级版)
- 洪荒之力
- 升级“FOTA”洪荒之力,对抗APP过多导致的慢、卡、热
- c语言 求三角形面积升级版
- 洪荒之力的英语翻译(mystical powers)
- 户外广告行业如何使出“洪荒之力”
- 洪荒之父洪君彦个人资料
- PDO vs MySQLi( MySQL升级版 )
- Windows7 家庭普通版升级旗舰版
- WINDOWS 7 家庭普通版升级旗舰版
- Windows 7 家庭普通版升级
- win7家庭普通版升级旗舰版 密钥
- 大学毕业的你,满腔洪荒之力却找不到出口?
- 产品新人,以洪荒之力助你技能提升
- 洪荒之力开我博客第一篇
- 系统内核的洪荒之力:挪动鼠标
- 流量时代:直播 APP 变现的洪荒之力
- 【妹测】洪荒之力,罗马仕电源新品体验
- Linux驱动编程day5-驱动自动加载,编译进内核以及自动执行
- 从源码分析View的measure过程
- POJ-2239 Selecting Courses,三维邻接矩阵实现,钻数据空子。
- poj 1228 Grandpa's Estate
- 最大递增子序列---动态规划
- C++ 求n!(普通版VS洪荒之力升级版)
- 自定义View 一
- NOIp1998PJ/Luogu P1010 幂次方 解题报告
- 最长公共子字符串
- iOS开发 - 第05篇 - 项目 - 13 - 离线缓存
- Xcode 7.3 解决不能自动联想的问题
- XUtils学习(最火爆的框架)
- 显式Intent和隐式Intnet差别、利用Intent进行Activity之间的数据传递(getStringExtra、startActivityForResult)
- 多重Fragment嵌套,子Fragment的onActivityResult方法不执行的解决方案