黑马程序员技术交流社区

标题: 运算1+2+3+4+5...+i的结果,采用效率高的方式 [打印本页]

作者: bztf    时间: 2015-5-7 14:12
标题: 运算1+2+3+4+5...+i的结果,采用效率高的方式
int i = 100;
System.out.println((i+1)*(i/2));//因为1+99、2+98、3+97结果都一样(上小学的时候的奥数题)  乘以i/2就ok了。
如果i的值在一千亿左右,效果会比较明显。
刚刚听了雪莉·桑德伯格在哈佛的演讲。他说努力得到反馈是一个好的习惯。所以希望大神们给出效率更高的代码。
作者: Huylens    时间: 2015-5-7 17:35
效率高,我觉得要是把数学中的知识能够用起来,才能达到真正的高效率。就像这个题目,如果知道这个算式的求和公式就一目了然了。
作者: sandra_bae    时间: 2015-5-7 17:45
一般效率高,要位运算之类的,不过我不懂
我会用函数的递归解决这个问题,但是不知道效率高不高。
感觉楼主学习好用心~~
作者: hsx500    时间: 2015-5-7 17:47
用等差数列求和公式吧- -只执行一次,循环要执行100次呢==
作者: 妖目    时间: 2015-5-7 17:47
新人不太懂,数学效率和计算机效率是两码事吧
作者: lshaizj    时间: 2015-5-7 18:07
厉害哦!学习了
作者: 少说话,多做事    时间: 2015-5-7 20:41
谢谢分享

作者: LPStone    时间: 2015-5-7 20:59
这也能加技术分 厉害呀
作者: 蓝七    时间: 2015-5-7 21:04
数学效率和计算机效率不能相提并论吧,如果你用个求和公式,是不是更快?
作者: 我爱吃橙子    时间: 2015-5-7 21:08
数学学的不好的我真的可以学好java吗
作者: as12510    时间: 2015-5-7 22:22
好吧。。但是这个方法不具有 适应性。还是觉得循环嵌套 合适一点,毕竟 写的程序是给别人用的。。。
作者: guowei    时间: 2015-5-7 22:34
思路不错
作者: 大可乐    时间: 2015-5-7 22:39
顶、、、、、、、、、、、、、
作者: zwuming    时间: 2015-5-8 00:28
这个应该就是最高效的了。我是来水经验的。。。
作者: 雾以泪聚丶    时间: 2015-5-8 00:33
感觉楼主好用心学习哇!!
作者: tream    时间: 2015-5-8 08:50
确实挺简单
作者: 只吃饭不洗碗    时间: 2015-5-8 08:59
思路不错  我是学数学的 不过基本上忘光了都。。。
作者: 柒仴、看雲佉    时间: 2015-5-9 21:59
这里i/2可以是小数吗
作者: ye646682485    时间: 2015-5-9 22:17
厉害 学习了
作者: lingdu    时间: 2015-5-9 22:41
好吧,学习了
作者: liya7907    时间: 2015-5-9 22:54
程序学到后面数学的基础是很重要的。数据结构和算法,还有很长的路要走。
作者: MllWing    时间: 2015-5-9 23:58
点赞。。。
作者: 鸿鹄2008    时间: 2015-5-9 23:59
sandra_bae 发表于 2015-5-7 17:45
一般效率高,要位运算之类的,不过我不懂
我会用函数的递归解决这个问题,但是不知道效率高不高。 ...

每次递归,都有一个方法占一片空间,并且都不释放空间,
实际上递归的效率比相同的循环要低效很多很多
作者: sandra_bae    时间: 2015-5-10 08:04
鸿鹄2008 发表于 2015-5-9 23:59
每次递归,都有一个方法占一片空间,并且都不释放空间,
实际上递归的效率比相同的循环要低效很多很多 ...

好吧~~
作者: Cat    时间: 2015-5-10 08:22
学习一下~
作者: xingfeichen    时间: 2015-5-10 08:24
这么多得解决方案




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2