首先假设你是计算机专业的大学生,或准备报考计算机专业的高中生。
需要先搞清楚自己是以下哪一类症状:
1. 对于简单的数学问题(如楼主提到的找质数、算阶乘)想不出思路(想出非最优思路也算合格)。
2. 想得出数学思路,但是不会转化为代码(代码冗长也算合格)。
如果是第1类,那么考虑转行比较实在吧;
如果是第2类,而且题主学习编程语言已经超过1个月,那么也请考虑转行吧;
如果是第2类,但是题主初学编程语言时间<1个月,那么请继续坚持,多读现成代码,然后自己编写。如此1个月仍不乐观,参考上一条。
对于用程序来解决数学问题,一个比较有效的方式是从对数学问题的定义入手。
再强调一遍,没有思路的时候,试着从定义入手。
比如寻找质数的简单(并不高效)算法,有如下思维过程:
1. 质数的定义:只能被1和自身整除的大于1的正整数。
2. 从定义提炼判断条件:
2.a. 不能被1或自身之外的任何数整除;
2.b. 大于1的正整数。
3. 用自然语言描述算法过程:
3.a. 2是质数;
3.b. 对每一个大于2的正整数(N)进行如下验证:用2到N-1除N(实际上到N的正平方根即可),若出现整除,则此数不是质数,否则是质数。
4. 将上述步骤翻译为伪代码或代码。
5. 优化算法(如剔除不必要的除法 *** 作)。
熟练之后对于简单问题可以在脑中进行迅速的问题定义和条件提炼,并在脑中想出模糊的算法过程,然后直接写代码。
C语言知识一门语言,了解其中的基本语句与常用的系统函数,就行了,至于“但是很多习题想不出算法“,这就是数据机构的知识了,如果能够明白算法而”写不出代码“,那就是动手实践太少了,这就是个个问题的原因,根据你的描述,感觉你主要是差在数据结果方面,可以找点简单方面的数据结构看看,因为如果没人带着,没有数据结构基础,自己看一般会比较吃力,作为一个刚入行的程序员,我是不会写算法的,当初刚入行的时候,我也在一直纠结这个问题,算法是一个程序员必须要学的吗?后来我明白了,这没有什么必然性。我来说一下我的浅见,我觉得问一个程序员会不会写算法,就相当于问一个厨师懂不懂化学?明明算法就在那里了,作为一个程序员,你只要把它运用到程序当中去,这就可以了。就像一个厨师,他只要知道菜与菜之间的搭配就好了,为什么非要让他知道菜与菜的元素构成呢?
什么是算法 计算机的算法指的是按照一定规律的方式来构建计算机如何将输入转化为所要求的输出的过程,换种说法,算法是对计算机上执行的计算过程的具体描述。算法的含义听起来有点高深莫测,其实说白了,算法就是一种固定的处理模式,是一种固定的公式。
由于算法本身的特点,比如明确性算法,他的每一个步骤都是明确的,对于结果的预期也是可以预见的。另外算法他是有限的,步骤可能有很多个,但是他不是无穷大的,它是有一个确定的一个约束条件,正是由于算法的这两个固定特征,所以这些东西都是死的,固定在那里,利用这种固定的模式,我们可以写出各种各样的不同的代码。我身边也有很多同事,算法写的也都是并不好,但是根据这种固定的模式,一样可以写出非常优质的代码。
总结:当然啦,我上面说算法只是一种固定的模式,并不是有意的去贬低算法的地位,相反我承认算法是一种很重要的东西,但是这也不意味着不会算法就写不出来优质的代码。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)