编程想不出算法怎么办?
首先假设你是计算机专业的大学生,或准备报考计算机专业的高中生。
需要先搞清楚自己是以下哪一类症状:
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. 优化算法(如剔除不必要的除法操作)。
我觉得题主是思维没建立起来,可以试试一下几部:
1,首先想想,你要写的问题,你不用程序能不能完成,比如说,给你一个数字,你用笔能不能算出它是否是质数。这一步是基础,如果这一步有问题,那下面就难了,就好像让你去教一个你自己都不会的问题,你怎么能教会别人
2,分析自己是怎么做的,一步一步的总结,你在解决问题的时候都做了什么事情,遇到什么问题,它们都是怎么被你解决的。
3,教给计算机,想象计算机是一个没有理解能力的孩子,他只能听懂步骤,而无法归纳总结,你不举任何例子,只通过步骤性的描述,计算机明白你的问题
4敲代码
最后,初期你也可以不明白,就是硬做,随便在网上找什么入门100题的,就是做,不会就看答案,只要这100题,题主能刷完,并且能自己做出来,不管是背下来还是理解的,你都不会再有问题了。