再棘手的问题都能用这个方法解决
作者: 博爱
发布时间: 2019年09月23日 14:05:01
编程中对人最有用的一个基础概念就是Problem solving,在《Think Python》的第一章中,就直接下了一个定义:
这句话看上去似乎无关痛痒,每个人都能理解,你就问了,这到底怎么用呢?
你就说,我勒个去,TM没有编程基础怎么解这道题?
后来我还是顺利解出了这道题,画出来的菊花和题图一模一样。现在说一下解题思路。
1、formulate problems
3、express a solution
先看看这朵菊花由哪些要素组成。
既然我能画直线,并让它按一定角度拐弯,那么一根直线拐弯四次不就是一个正方形吗?
诶!那如果,我让拐弯的角度变化,是不是就可以画一个五边形?六边形不是可以了吗?
于是,我便可以随意画出多边形,哈,圆不就是一个边足够多的多边形吗?于是我把边数加到足够多。
Bingo!既然圆能画,顺着刚才的思路往上推,很快就能得到一个菊花函数,问题就解决了。我用这函数画了一朵黑黑的菊花:
这个案例非常鲜明地展现了编程解决难题的思路,我总结如下:
2、不断分解
4、逆推回去
坚信一切事物都可再分。
「第一性原理」的思考方式是用物理学的角度看待世界的方法,也就是说一层层剥开事物的表象,看到里面的本质,然后再从本质一层层往上走。
每一个逻辑层次问题解决后,它就被封装成一个组块,用于解决下一个问题。
其实,人类的知识也是如此发展的,很多解决方案被封装成一个又一个组块,很多时候,你直接调用它即可,未必需要理解其原理。