小王子 发表于 2018-1-19 19:54:25

进阶数学算法


作为新时代的技术宅,本王子研究一下算法是很有必要的啦。
我相信大多数老师都学过变量计算了,但是普通的加减乘除并不能满足我们的胃口,在这里让我们对复杂算法进行探讨。

变量可以用来干嘛:计数是基本功能,此外还有对状态进行标记,比如判断当前处于0状态还是1状态,在一些复杂程序中甚至对跳出方式进行标记

复杂算法复杂在哪:既然是复杂吗,我们需要用到很多变量,10个整形变量可能并不一定够,我们需要用到10个浮点变量,并且其中的一些与传感传来的模拟量和数字量达成一定数量关系。这样变量可能还是不够,有两种方法,第一:找到先前使用过的变量,判断它是否在后面的程序里用到,如果没用到,对它进行归零,然后重复利用。第二:自定义模块,定义更多的变量来使用
                               我们可能需要用到复杂的程序结构:大循环里套几个小循环,小循环里还有小小循环和判断,还有时不时的跳出和continue
                               我们可能要用到自定义模块,使用一些函数代码来计算想要的数据

编辑复杂程序的注意点:1.分清每个变量的作用,尤其代表状态的变量要从头到尾分清其代表的含义
                                    2.什么时候赋初值、归零,什么时候当作寄存器、计数器一直累加,要搞清。模块在程序段的位置是极其关键的,关乎到整段程序的逻辑
                                    3.列提纲、打草稿,像写作文一样,为了使逻辑清晰、不遗忘关键点,先记纸上是很好的办法。当然记忆力超群者可无视此条……

说了很多,可能比较抽象,那么我今天来分享几个程序,大家伙可以看一看。

此外大家可以自行尝试一些有趣的算法:1.取余,进阶算法是韩信点兵问题:韩信点了X个兵,3个一排站多1个人,5个一排站多3个人,7个一排站多5个人,请问韩信点了多少兵
                                                               2.斗牛:3轮发牌,每位玩家手上每轮得到一张牌,最后评分,玩家得到牌的点数总和除以10的余数,最大者赢
                                                               3.算24点,随机4张牌,计算通过加减乘除能否得到24,如能得到,给出算法
                                                               4.排序方法:随机生成5个数,经过计算让他们按从小到大的顺序显示出来(能写出的算法种类越多越好)
                                                               5.进位计算:秒针转了60下,分针转一下,秒针归零,这就是常见的时间60进制的进位计算。编出程序来应该不难对伐?加个时间传感器。

另外有人愿意探讨哥德巴赫猜想、费马猜想,也欢迎留言讨论。





admin 发表于 2018-1-19 20:56:43

很棒!有点图片就更好了

小王子 发表于 2018-1-20 12:05:22

好的,下次发点截图,这回是第一次尝试发帖。

古古 发表于 2018-2-2 18:23:57

学习啦
页: [1]
查看完整版本: 进阶数学算法