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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cxdzh 中级黑马   /  2014-11-9 21:30  /  1814 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1.         //以前自己写的渣渣,学了一个多月了,从来没想过这样有什么不好.
  2.         public static int add(int n){
  3.                 int sum=0;
  4.                 for(int i=0;i<=n;i++){
  5.                         sum=sum+i;
  6.                 }
  7.                 return sum;
  8.         }


  9.         //今天看数据结构与算法的书提到高斯算法,才发现小学就学会的东西,为啥想不到运用..惭愧!
  10.         public static int add1(int n){
  11.                 int sum=0;
  12.                 sum=(1+n)*n/2;
  13.                 return sum;
  14.         }
复制代码


10 个回复

倒序浏览
抢沙发。。。。。。。。
回复 使用道具 举报
因为你在用计算机思维解决问题,
回复 使用道具 举报
第一种比较通用,可以算任意数的加法,第二种如果出现奇数/2的话就出错了。不过楼主的思维方式值得学习

点评

第二种出现奇数也无碍。奇数+1之后还是偶数,偶数/2肯定整除,再乘以奇数偶数就没什么影响了。  发表于 2014-11-10 10:16
回复 使用道具 举报 1 0
DamonZh 发表于 2014-11-9 22:11
第一种比较通用,可以算任意数的加法,第二种如果出现奇数/2的话就出错了。不过楼主的思维方式值得学习 ...

完全忘记了奇数问题...这么一想确实,我基础太差了》。。
回复 使用道具 举报
DamonZh 发表于 2014-11-9 22:11
第一种比较通用,可以算任意数的加法,第二种如果出现奇数/2的话就出错了。不过楼主的思维方式值得学习 ...

(n+1)*n 怎么可能会变成奇数。。。
回复 使用道具 举报
huoxy 中级黑马 2014-11-10 09:43:47
7#
算法确实能让代码显得高大上,但是代码的阅读性和理解性就差一点,毕老师在视屏中建议过:在完成同样功能的情况下,且对性能没什么要求时,建议用简单明了的第一种。
回复 使用道具 举报
等差数列求和
回复 使用道具 举报
  1. public class Test {

  2.         public static void main(String[] args) {
  3.                 // TODO Auto-generated method stub
  4.                 int temp = 0;
  5.                 System.out.println(getSum(1,0));
  6.         }
  7.         private static int getSum(int num,int temp){
  8.                 if(num<=100)
  9.                         temp = getSum(num+1,temp) + num;
  10.                 return temp;
  11.         }
  12. }
复制代码
回复 使用道具 举报
kakasa 发表于 2014-11-9 23:06
(n+1)*n 怎么可能会变成奇数。。。

唔,是我2啦:Q
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马