百合文库
首页 > 网文

新手小白如何像程序员一样思考——解决问题的经验(2)

步骤如下:
1、理解非常确切的知道自己被问的是什么问题。大多数难题之所以难,是因为你不理解它们,所以这个是第一步。
如何知道什么时候你理解了一个问题呢?——当你能用简单的、自己的语言解释它的时候。
你可能会记得,当你被困在一个问题上,一旦开始解释它,你就立刻看到逻辑上的漏洞,而且漏洞很可能也是你以前没有看到的。
大多数程序员都知道这种感觉吧!
这就是为什么你应该把你的问题写下来,画个图,或者告诉别人。
“If you can’t explain something in simple terms, you don’t understand it.” 如果你不能用简单的语言来解释某件事,你就无法理解它 — Richard Feynman
2、计划不要在没有计划的情况下,一头扎进解决问题的过程中(并且希望你能混过去),计划你的解决方案吧!
如果你不能写下计划确切的步骤,什么也都不帮不了你。
在编程中,这意味着不要立即开始进行黑客攻击。给你的大脑一定的时间来分析问题和处理信息。
为了得到一个好计划,回答这个问题: 给定输入 X,返回输入Y所需要的步骤什么? 程序员的世界里面,有一个伟大的工具 来帮助他们实现这个,那就是注释!
3、拆分这是最重要的一步
不要试图一次就解决一个大问题,不然你可能会哭的。
相反,当你把这个问题进行拆分成一个一个子问题,这些子问题就更加容易解决了。
然后,逐个解决每个子问题,从最简单的开始。最简单意味着,你知道答案(或者更加接近那个答案)。
另外最简单的方法意味着子问题的解决并不依赖与其他问题的解决。
一旦你解决了每个子问题,再把这些点连接起来
连接所有“子解决方案” ,将为你提供的原始问题的解决方法!那么恭喜你,你做到了!
这种技巧呢,是解决所有问题的基石,请记住它(建议你重新再读一遍这个步骤)
如果我能交给每一个初学者一种解决问题的技能,那就是“减少问题这个技能” ,例如:假设你是一个新程序员,你被要求编写一个程序,读取10个数字,然后算出哪个数字是第三高的,对于一个全新的程序员来说,这可能是一项艰巨的任务,尽管它只需要基本的编程语法
如果你陷入困境,你就应该把问题简化。而不是专注在第三个高的数字上。如何在一个整体中先找到最高的那个数呢?还是太难了?那从三个数字中找到最大的那个呢? 还是太难? 那如果是寻找两个较大的那个呢?
将问题简化到你知道如何解决问题,并编写解决方案的程度。然后稍微展开问题,重新解决方案使其匹配,并继续进行,知道你回到你最开始的地方。— V. Anton Spraul
4、卡住了呢?现在,你可能正坐在那里想,这几个步骤看起来还不错嘛,但如果我卡住了,设置不能解决子问题该怎么办?
猜你喜欢