阶乘计算

蓝桥杯学习记录

思路
1.计算阶乘,首先要明白阶乘的计算式:
如果num=1或者num=0 阶乘的结果都是1
否则f(n)=f (i-1 ) 乘 i

2.注意数据的规模选择适合的存储结构,阶乘的结果很大,我们这里用到了math包里面的BigInteger


public class JieChen3 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
        //用BigInteger类型的数组来存放阶乘的结果,因为阶乘的结果很大,27的结果就超出了long long类型的最大存放范围
		BigInteger f[]= new BigInteger[5050];
		//0 和1的阶乘都是1用BigInteger的静态常量BigInteger.ONE来表示1
		f[0]=f[1]=BigInteger.ONE;
		//阶乘的递归式
		for(int i = 2 ;i < 5000;i++ ) {
			f[i]=f[i-1].multiply(BigInteger.valueOf(i));
		}
		
		Scanner cin = new Scanner(System.in);
		while(cin.hasNext()) {
			int  m = cin.nextInt();
			System.out.println(f[m]);
		}
		cin.close();
		
	}
}

测试结果

思考
1.在做算法题的时候一定要考虑到数据的规模,数据的规模太大,有可能会导致算法的部分测试用例不能通过,这也就是数据类型决定的

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-10 15:24
高考前一晚在OPPO手机上设置了早上5:30的闹钟,然而闹钟并未按时响起。直到妈妈做好早餐后,在6:27打开手机才发现闹钟未触发,“气得早上饭都没吃”。资本家你赢了
永不遗忘:我来解释一下 :Oppo 手机晚上两点会自动进行系统更新,这个系统更新会重置掉所有设置好的闹钟,而且他也不会告诉你,而且只有 Oppo 会这样,华为苹果小米三星都不会
点赞 评论 收藏
分享
门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务