您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
一道编程题:实现加法运算,如“1+1=2”。你如何展现自己强大的程序设计能力?
算法,复杂度,程序一道编程题:实现加法运算,如“1+1=2”。你如何展现自己强大的程序设计能力?
发布时间:2020-12-06加入收藏来源:互联网点击:
一道编程题:实现加法运算,如“1+1=2”。你如何展现自己强大的程序设计能力?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
如果要求编程实现1+1的运算,速度最快的应该就是printf(“1+1=2”) ;
也许会说,这压根不是程序算的,但如果你只想知道1+1的结果是什么,这个效率绝对是最优的。这里面就体现了编程里最基本的东西--效率。
比如,要求算1+2+3+... +n。
方法1,使用for,从1加到n;
方法2,利用递归 。
那么考虑递归会导致嵌套调用,程序在运行时会多次入栈出栈保存或者恢复程序上下文,效率肯定不如for。
还有另外一种算法,就是利用公式(1+n) *n/2,不需要用到循环。那么sum可以写成:
sum=n&0x1?((1+n)>>1) *n:(n>>1) *(n+1)
这里乘除法尽量转化为移位操作,cpu处理逻辑运算,加法运算效率是最高的,所有的乘除操作,其实都是采用多次调用加法器来实现。
算法里面会用到时间复杂度O,描述了该算法的运行时间。针对上面的算法,使用for,其时间复杂度是O(n),利用公式,时间复杂度是O(1),就其算法复杂度来说,利用公式是优于使用for循环的。
一个需求,可能有无数个方法来满足,如何选取一个最优的方法,就是展现程序设计能力的时候,这里的程序设计能力,包括软件架构、数据结构、算法、数据存储、系统级优化等。就上面这个例子来说,不涉及其他,只需要一个合适的算法就行,就现在的CPU能力来说,上面的几种算法可能都体现不出来效率的差距,但是如果对象的范围变大变广,要处理海量的数据,那么,算法的不同,差距就会很明显。
回答于 2019-09-11 08:43:50
哈哈,越简单的,越考验基础理解。
既然问的是程序设计,那就程序设计、不是单纯算法喽。
1、分为三步咯:输入、运算(算法)、输出;
2、输入,也就对输入数据进行处理;入参判断:类型判断、非空判断;
3、运算,对输入数据进行计算;
a.为了程序灵活性,参数要传进来(依赖倒. 置);为有些高级语言,可以让程序更灵活,类的继承、多态;
b. 计算,就是选择合适的算法;也就时间和空间的一种纠结;
4、输出,计算结束、返回数据,其实也可以理解为程序的出口;
a. 容错处理,提示信息、记录日志等;
b. 返回数据,一般不对数据的格式、类型做太多判断,把判断交给数据调用的地方;
这问题有点儿大,头条问答上说不完。多实践、多分析大牛的代码。
回答于 2019-09-11 08:43:50
实现1+1运算,是靠数字逻辑电路,不是靠编程
回答于 2019-09-11 08:43:50
简单而言,程序就是IPO。
此题无需输入,无需处理,直接输出字符“2”即可。
输出数字“2”的,虽然编译会自行优化成字符,但就编程而言有小瑕疵。
回答于 2019-09-11 08:43:50
题主想说的是汇编编程吧???
上一篇:据说多地大型百货商场关门或易主,这是真的吗,传统百货会“凉”吗?新零售会取而代之吗?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |