博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高斯告诉我们的
阅读量:6607 次
发布时间:2019-06-24

本文共 841 字,大约阅读时间需要 2 分钟。

  hot3.png

先看一个简单的题目:编程算出1+2+3+……+100的值 ?

记得刚学C语言时我是这样做的,代码如下:

#define LOWER    1	#define UPPER  100	int val;	int sum = 0;	for(val=LOWER; val < UPPER ; val ++)		sum+=val;	return sum;

然而数学王子高斯告诉我们还可以这样做 :

int sum = 0;	sum = (LOWER + UPPER )* (UPPER - LOWER +1) /2;	return sum;

解决同样的问题,效率却高了近百倍

我们学习计算机与编程,有的时候要有计算机的思维,站在计算机的角度去解决问题,比如对代码作进一步的优化时,你就要以CPU的体系结构及运行有足够了解。

然而我们也不能陷入思维的误区,要知道计算机学科的本质是人造学科,最终还是人的思维,不要认为计算机是万能的,把什么事情都交给他去做,多动脑思考一下,代码的效率或许会有意想不到的提升。

再看一个例子,找出100以内所有能被3整除且个位数为7的所有正整数?

如果让计算机去找,或许代码如下:

int val;	for(val = 1; val < UPPER ; val ++)	{		if(0 == (val%3))		{			if((val%10) != 7)				continue;			printf("%3d",val);		}	}

然而当我们适当优化一下的话,效率就提升了十多倍,如下:

#define STEP   10	int tmp,val;	for(tmp = 1; tmp <  STEP  ; tmp ++  )	{		val = tmp * 10 + 7;		if((val%3) != 0)			continue;		printf("%3d",val);	}

转载于:https://my.oschina.net/czzhu/blog/63555

你可能感兴趣的文章
《C程序员:从校园到职场》出版预告(2):从“百花齐放”到“一枝独秀”
查看>>
Network Monitor 查询命令和MySQL命令
查看>>
好“戏”刚刚开幕 云计算逐步被认可
查看>>
云安全:这也是需要花大钱去建设的部分
查看>>
LinkedIn文本分析平台:主题挖掘的四大技术步骤
查看>>
以全局产业观领航智慧城市建设
查看>>
Intel 18核酷睿i9因故延期到明年:AMD Ryzen反超
查看>>
5G网络不止能1秒下一部电影,它还能够…
查看>>
英特尔:McAfee将剥离出去独立运营
查看>>
中国电信集采终端6700万部 金额达1070亿元
查看>>
2016年的十个数据中心故事
查看>>
《Java并发编程的艺术》一一3.3 顺序一致性
查看>>
《CCNP SWITCH 300-115认证考试指南》——导读
查看>>
《设计之外——比修图更重要的111件事》—第1部分3 虚心学习
查看>>
Solaris Studio 12.4 Beta update 7/2014
查看>>
EVCache —— Netflix 的分布式内存数据存储
查看>>
《用友ERP-U8(8.72版)标准财务模拟实训》——1.4 系统管理注册和导入演示账套...
查看>>
《Node.js区块链开发》一3.6 总结
查看>>
《UG NX8.0中文版完全自学手册》一2.8 布尔运算
查看>>
pera 发布新概念浏览器 Neon ,内置分屏模式
查看>>