标题:悟.编程——4.我们为什么不用数学公式
只看楼主
多维数组
Rank: 1
等 级:新手上路
帖 子:238
专家分:0
注 册:2006-8-16
 问题点数:0 回复次数:5 
悟.编程——4.我们为什么不用数学公式

在看这一点前,我希望大家编写一个程序:
求出1+2+3+......+100的值,并输出

写完了吗?我想你写的程序的算法会和我的差不多:
#include <stdio.h>

int main()

   int sum=0;
for(int i=1; i<=100; ++i)
{
sum+=i;
}
printf("1+2+......+100=%d", sum);
return 0;
}

但我可以告诉你,你我的算法并不是最好的算法,下面我们看一看另一种算法:
#include <stdio.h>

int main()
{
  int sum;
  sum=(1+100)*100/2;
printf("1+2+......+100=%d", sum);
return 0;
}

是不是恍然大悟,我问过几位同学,他们的算法都是第一种,我最初也是。但我们为什么不用数学公式呢?我们为什么不借助数学的力量呢?

参考资料:
C语言高效编程的四大绝招

2007年7月20日:
最近,我在XX论坛中看到一些大侠的评论,说得很好:为什么不直接输出5050呢?(如下)
#include <stdio.h>
int main()
{
printf("5050\n"); //PRINT 1+2+3+......+99+100
return 0;
}
这似乎可以追求到更高的效率。但我还是要再次发表自己的意见:在效率上,直接输出可能会略胜一筹,但C标准允许常量表达式在编译期间确定值,也就是说-------大多数情况下直接把值计算出来的效率是不会高的,而且这样还会使你的程序变得难阅读。所以建议大家使用还是写常量表达式而不写值。

搜索更多相关主题的帖子: 数学 公式 int sum 算法 
2007-08-30 21:21
y448935314
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-2-13
得分:0 
有主见

您的一点点奉献,就可能让他倍感到温暖!~~ 受人滴水之恩,当涌泉相报!~~ 试着奉献一下吧!~~~~
2007-08-31 10:06
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
得分:0 

我记得我有一本英文版的书叫ANSI C第一章好像就有着一段的描述,那本书挺好的,推荐初学者看一下。


我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2007-08-31 10:08
herbert_1987
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:1314
专家分:0
注 册:2007-5-13
得分:0 

我也是,不习惯结合数学公式来编程.


人生重要的不是所站的位置,而是所朝的方向
2007-08-31 10:26
zzxwill
Rank: 1
等 级:新手上路
帖 子:398
专家分:0
注 册:2007-8-15
得分:0 
呵呵,受益!

一分耕耘,一分收获。
2007-08-31 12:39
jackys2006
Rank: 1
等 级:新手上路
帖 子:195
专家分:0
注 册:2006-3-10
得分:0 
楼主误会了,
编程的目的是解决问题,
而并非简单的输出结果,
何况,如果用上数学公式,便会失去普遍性.

所以,从应用角度讲,需要那么做
比如,你要计算1加到到14549763467464的值,相信还是编程来的简单吧,
你直接算结果?
慢慢来吧...

还有1*2*3*4*5*...*100呢?
你算的出结果吗?

2007-08-31 15:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-166595-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.248407 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved