博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高斯求和1+2+3+······+n-1+n=?
阅读量:6824 次
发布时间:2019-06-26

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

从求解1+2+3+······+n-1+n引出的一些思考。

 

 
  1. 1: int countSum(int n)   
  2. 2: {   
  3. 3: int i;   
  4. 4: int sum;   
  5. 5: if(n<0)   
  6. 6: {   
  7. 7: //error   
  8. 8: }   
  9. 9: for(i=1;i<=n;i++) //考虑边界问题非常关键   
  10. 10: {   
  11. 11: sum+=i;   
  12. 12: }   
  13. 13: return sum;   
  14. 14: //O(n)   
  15. 15: }   
  16. 上面是经常用到的一种方式,使用循环来得到答案。时间复杂度取决于“n”的值O(n);上面的for循环中的条件判断非常关键。   
  17. 1: int countSum(int n)   
  18. 2: {   
  19. 3: if(n<0)   
  20. 4: {   
  21. 5: //error   
  22. 6: }   
  23. 7: return n*(n+1)/2; //运用高斯公式同样可以简化问题得到结果   
  24. 8: //O(1)   
  25. 9: } 对于这样的问题可以使用已经确定的公式来计算。时间复杂度O(1)   
  26. 1: int countSum(int n)   
  27. 2: {   
  28. 3: if(n<0){   
  29. 4: //error   
  30. 5: }   
  31. 6: if(n==1){   
  32. 7: return 1;   
  33. 8: }else{   
  34. 9: return n+sum(n-1);   
  35. 10: }   
  36. 11: } 

又是一个递归的使用。

递归算法中可以看出:经过了两次判断,和n次方法的调用,对于100这么小的数据是看不出来时间方面的消耗,但是如果一旦数据非常大的时候这个算法的时间效率是很低的。

计算机通过一个简单的计算问题,可以有不同的设计思路,也同样产生不同的时间复杂度,还有代码的编辑量。

编写代码的优劣就可以体现出来。对于程序设计而言,一个问题的解决至少得考虑下问题:

  1. 正确性,必须符合特地定问题的需要
  2. 可读性,算法便于理解
  3. 健壮性,当遇到非法输入的时候能够做出相应的处理,而不产生不可预料的结果
  4. 算法的时间高利用率
  5. 内存空间的高利用率

       通常情况下,时间的利用率和空间的利用率总是矛盾的,我们的取舍要看这两种资源的丰富程度。计算机起初发展的时候,内存空间特别小,所以就特别注重空间的利用率,比如MCS 51单片机,它的内存空间一般就是64KB大小,所以对于它来说解决空间的问题才是主要矛盾;而对于现在的PC机内存大多数已经达到2G或以上,所以解决时间的问题才是主要矛盾。

      当然时间是不可再生资源,所以现如今的程序设计对于时间效率有着很高的要求,对于Java程序设计,由于它本身的虚拟机机制,所以在效率方面同比C语言要低一些,因此更应在注重程序设计过程中的编码方式,算法设计,变量的定义,方法的调用等等,尽可能的提高运行效率。

本文转自 secondriver 51CTO博客,原文链接:http://blog.51cto.com/aiilive/839633,如需转载请自行联系原作者

你可能感兴趣的文章
java数据结构 • 面向对象 • 异常 • 随机数·时间
查看>>
springmvc 实现pc端手机端适配(同一个请求根据不同客户端展示不同界面)
查看>>
BTree和B+Tree详解
查看>>
VS2005工程迁移到Eclipse CDT
查看>>
Linux高端内存映射(上)【转】
查看>>
usb_control_msg参数详解【转】
查看>>
8086汇编指令速查手册
查看>>
j2EE web.xml中的url-pattern的映射规则
查看>>
设计模式之单例模式
查看>>
获取客户端ip地址
查看>>
sessionid如何产生?由谁产生?保存在哪里?
查看>>
oracle 监听服务异常
查看>>
网络流——最大流Dinic算法
查看>>
下面的div浮动上来了
查看>>
程序员生存定律
查看>>
windows 下搭建 apache + php52 + postgreSQL7/8/9环境
查看>>
python正则表达式
查看>>
分布式系统的面试题3
查看>>
带输入输出参数的存储过程
查看>>
CSS3 3D酷炫立方体变换动画
查看>>