Chinaunix首页 | 论坛 | 博客
  • 博客访问: 279479
  • 博文数量: 109
  • 博客积分: 2116
  • 博客等级: 大尉
  • 技术积分: 1062
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-22 15:38
文章分类

全部博文(109)

文章存档

2013年(2)

2011年(16)

2010年(90)

2009年(1)

我的朋友

分类: C/C++

2010-11-07 19:50:13

题: 1+2+3+…+n

(假定结果不会超过长整型变量的范围)

  一般做法是:

  int  sum(int n)

  {

   long sum=0;

   for(int i=0;i

   sum+=i;

   return sum;

  }

  上面这种做法简单,方便可是效率怎么样,应该不是最好。

  在数学上,我们有一个求和公式: n*(n+1)/2

  于是有

  int sum(int n)

  {

   return n*(n+1)/2;

  }

  显然,这样效率显然比上面要好得很多。

  所以有时候算法高效只需要一个转变。而数学公式正是求解的导向。

阅读(274) | 评论(0) | 转发(0) |
0

上一篇:最大公因子

下一篇:百鸡问题

给主人留下些什么吧!~~