Java漫谈5

吴军老师有在他的《硅谷来信》中分享过他对于人工智能的看法,吴老师就认为,人工智能不会发展成黑客帝国的那种恐怖境地,原因是当初科学家在创立计算机之前先把人类要解决的事情分成了两类,一类是通过固定的步骤能得到答案的,另一类是无法通过确定的步骤得到准确答案的。而计算机的出现,就是为了提升解决前一种问题的效率和速度。

对于这种划分,仁者见仁智者见智。不过,我们先假定这种分法的正确性,那么,对计算机而言,它的出现,就是在替代人,做一些固定化流程的事情。比如从1+……+100这样的活,虽然我们也有高斯公式可以不用繁琐地一次次累加,但是尽管我们动用公式,也赶不上计算机累加的速度。而在这个累加的过程中,我们不会手动地每次都输入值,而是告诉计算机,你要从多少开始累加,到多少的时候停止累加,而这个过程就是传说中的流程控制。

所谓的流程控制,可以粗略地理解为,判断与循环的排列组合。为什么这么说呢,还是回到之前的累加的功能上,先不管任何的编程语句,就仅仅对这个过程做一个简单地抽象,我从哪个数开始加,加到哪个数的时候输出。那么把这个过程再整理一下就是,我需要判断开始和结束的点,剩下的就交给循环解决。这其中,判断归判断语句管理,循环归循环语句管理。

再细化一下,如果就是求从1+…+100,那么我们的任务可以拆分判断什么时候开始,判断什么时候循环,判断什么时候结束三部分。再细一步,就是从1开始,经过不断循环,累加到100结束。所以一个简单的for循环就此出现。大致如下

for(int i=1; i<101; i++){
    //your code ...

}

这里的i就像一个旁观者一样,冷眼旁观每一次的循环。但如果并不知道循环的次数,只知道循环体中的某一个变量本身就是一个判断条件的时候,for循环的写法就会显得繁琐,繁琐有二,其一为for的无限循环表示方法比较变扭,其二为for循环里面还要再套一层if判断,其简洁程度就不高了。就以喝水为例,我其实更加关心的是有没有喝饱这个状态,并不关心喝了几次,于是,用for语句就会出现上面的两个繁琐,而用while语句则会显得较为简洁,具体如下:

//for循环描述
for(;;){
    if(饱了么){
        break;
    }else{
        继续吃();
    }
}
//while循环描述
while(饿了么){
    继续吃();
}

你要是真的饿了一天的话,那么肯定是看到饭想都不想就会先吃,然后再判断有没有吃饱,这个时候,while循环就要变成do-while循环,因为do-while与while刚好相反,第一次的时候不判断,直接执行。代码如下:

do{
    继续吃();
}while(饱了么);

不过就目前来看,for循环用的最多,while循环会在自定义定时器这种情况下用一下,do-while循环就用得更少了。除了一般的计数,累加这样的重复性数学运算或者说是数学公式里会用到之外,其余用的多的是在集合中运用,那个时候,增强for循环会用得逐渐多起来,不过在那种情况下,for循环也是可以继续用的。增强for循环我们在谈到集合的时候再聊。此外,这只是我做到目前为止的遇到的比例,每个行业不同,比例也不同。根据自己的工作经验整理出一套自己的概率排布才更重要。

今天我们聊了一下流程控制语句,希望能让你对流程控制有一个新视角的理解,我们下回见。

原文发布于微信公众号 - 怀英的自我修炼(hydzwxl)

原文发表时间:2017-10-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏诸葛青云的专栏

C语言:画一个爱心 送女票

其实学编程关键是学习其思想,如果你精通了一门,再去学其他的时候也很容易上手。C不会过时的,尤其是在unix、linux操作平台上,学好C是必须的。

30
来自专栏算法channel

基本算法|图解各种树(四)

基本算法|图解各种树(一) 基本算法|图解各种树(二) 基本算法|图解各种树(三) 01 局部性 刚被访问过的数据,极有可能很快地再次被访问,这一现象在信息...

3527
来自专栏云飞学编程

稳固基础!一节课掌握python内置数据类型—列表

点击链接加入群【python┮】:https://jq.qq.com/?_wv=1027&k=577hmAB

642
来自专栏北京马哥教育

黑科技 | 用Python只花十五分钟完成正则表达式五天任务量

数据清理是很多机器学习任务上我们遇到的首要问题。本文介绍的 FastText 是一个开源 Python 库,可用于快速进行大规模语料库的文本搜索与替换。该项目的...

3279
来自专栏九彩拼盘的叨叨叨

简单设计的四个要素(译)

我意识到我从来没有将这些写下来,虽然我在作为一个教练和导师时会常常提到这些。 更新于2013年12月11日。你读完这篇文章后,一定会想读下一篇文章。

473
来自专栏程序员互动联盟

【答疑释惑第六讲】编程找工作对大学要求高吗?

疑惑一 编程找工作对大学要求高吗? 很多人一边学着编程一边心里有个疑问就是这行出来找工作对大学要求高吗?这个问题平心而论要看情况的。一般的BAT这样的大公司对于...

3085
来自专栏日常学python

一行Python代码能干嘛?

python有很多优雅有趣的代码写法,同时还很简短,以至于当我刚开始接触这个编程语言的时候,就爱不释手。而前几天的编程语言榜单中python也超越了java成为...

570
来自专栏灯塔大数据

技术 | Python从零开始系列连载(二十二)

为了解答大家学习Python时遇到各种常见问题,小灯塔特地整理了一系列从零开始的入门到熟练的系列连载,每周五准时推出,欢迎大家学积极学习转载~

743
来自专栏机器之心

资源 | 十五分钟完成Regex五天任务:FastText,语料库数据快速清理利器

39611
来自专栏数据结构与算法

洛谷P2439 [SDOI2005]阶梯教室设备利用(带权区间覆盖)

834

扫描关注云+社区