A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© kaixinkai   /  2016-2-12 12:19  /  3961 人查看  /  55 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

zapoo 发表于 2016-2-17 09:21
因为1000的阶乘太大了,int放不下,为了方便,你可以输入阶乘值在int范围内的任何数,一下是代码和运行结果
pac ...

1000!比较大,基本数据类型存不下,如何解决,这才是本题的考点
回复 使用道具 举报
我是来看看的
回复 使用道具 举报
shiyedong 来自手机 中级黑马 2016-2-18 01:47:19
43#
宋达思 发表于 2016-2-12 18:26
我是学JavaEE的,今年1月15号的基础班,在北京校区,渣渣1个,还请多指教哦 ...

你好,我是2月25日基础班的学员。我想问下去到以后有什么需要注意的嘛?学习内容是不是跟官网上发布的自学视频一样?有没有入学测试什么的?求前辈告知。
回复 使用道具 举报
自顶
回复 使用道具 举报
思考了半天,本打算通过从低位到高位挨个打印出来,但发现不是说没法打印,由于存储值溢出,连到底是多少你都不知道,,到底溢出了多少次也不知道,如果未溢出前存储值已经接近Long.MAX_VALUE,很可能乘以几百后直接溢出了几百次,都没法下手了
回复 使用道具 举报
就是我 发表于 2016-2-21 13:22
思考了半天,本打算通过从低位到高位挨个打印出来,但发现不是说没法打印,由于存储值溢出,连到底是多少你都不 ...

前边的楼层有详细的解释
回复 使用道具 举报
现在还看不懂什么意思
回复 使用道具 举报
宋达思 发表于 2016-2-13 09:47
对于这个题,其实不难,但是只用前10天的知识,还不能先算出结果,反正我不会,太渣。咱们基础班讲的东西应 ...

这个妹子的思维不错呢
回复 使用道具 举报
貌似求不到吧,反正我是不会
回复 使用道具 举报
kaixinkai 发表于 2016-2-14 18:23
年前上了半个月,年后后天开学。学到了基础班day12

那也没几天呢啊
回复 使用道具 举报
用数组从0开始存储1000!的结果的每位数字,先从低位算,比如定义num[2000],最初除了num[0]所有元素赋值0,然后从num[0]开始,每个数组元素都去乘1,乘2,乘3……并赋值给该数组元素,不过每次乘完后要判断是否大于10,因为我们用的是十进制,当没一位上的数大于10就会进1.。
比如。最开始,num[0]=num[0]*1 =1、num[0]=num[0]*2=2、num[0]=num[0]*3=6、、、、、、
                     当num[0]=num[0]*4=24时。因为num[0]相当于是个位。此时大于10,需要向num[1](表示十位)进位,将num[0]除以10,取十位上的2,即num[1]从0变成了2,。对num[0]此处对10求余,所以num[0]则从24变成了4..............其他位也这么来做,。应该可以算出来吧,,我记得原来做过这种大数的算法题,书上就是这么讲的。
(讲的貌似不怎么清楚,见谅。以前做的题,刚刚去看了一下,那时候是用C做的,所以要用数组来存结果,,。其实对于java,这种大数的算法题,有一个变态的方法,就是使用BigInteger类,很快就出来了。。。。)
回复 使用道具 举报
一般人是算不出来的,现在通过这道题就能看出来 数学好的人学java是多么的占优势
回复 使用道具 举报
123
您需要登录后才可以回帖 登录 | 加入黑马