用传统的水仙花数题的求解历程,反映一下我对于写程序的一些看法。
首先,一个需求拿到手后,看完就写,我是不推崇的。//不要拿着课后题说事情。那些题是提升语法的熟练度的。
我所认为的变成顺序,是拿到一个题目。进行题目分析,尽量分析出题目的领域。紧接着,尝试得到解题的算法。算法设计无论何时都是耗时且烧脑的。这一步先不要管太细节的边界问题。目的以得到一个大的解题思路为准。紧接着,编写程序。测试,边界测试,各种测试之后。考虑优化的问题。优化算法得出后,回归测试。
至于为社么把优化放在最后。这是我的认为。个人按照自己的习惯进行优化步骤的,一个程序不能跑起来实在是谈不到优化的程度,当需求满足后在进行优化才有会得到比较好的结果。
看看题目
水仙花数是指一个 3位数,它的每个位上的数字的 3 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)
嗯~ o(* ̄▽ ̄*)o
求一系列的数字。按规则求,那就外部一个遍历的循环,内部进行相等的比较就好。写完,一跑OK。想一想貌似每次都算立方值,有点
不划算,那么用一个数组装起来。O(∩_∩)O这个题目,到这里就没什么实质性的优化了。
如果数字再大一点,那就需要进行筛数的过程,这个筛的过程考验的将是数学功底是否扎实的问题。这里就不再赘述,如有兴趣可以在优快云搜索一片文章,内容是讲素数的判定算法,在那个题目中,利用了数的特征,很有启发性。
聊一聊算法的优化问题
算法优化一直都是不冷不热的问题,想让它热的人都是在计算的时候遇见了不可以用时间硬堆的计算量,不热的人,就是懒。。总归,算法优化是有必要的,当今的计算机构成是模块化的,整体的提升大于部分的提升。在多级计算,分布式存取,并行计算的时候,微小的提升是可能引起质变的。
算法的优化,小到一个边界值的确定,大到数据结构,算法的重新设计。都是很重要的。相信递归的力量!