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 条评论
登录 后参与评论

相关文章

来自专栏smy

海量数据相似度计算之simhash短文本查找

在前一篇文章 《海量数据相似度计算之simhash和海明距离》 介绍了simhash的原理,大家应该感觉到了算法的魅力。但是随着业务的增长 simhash的数据...

874
来自专栏TechBox

数据结构与算法系列之绪论前言什么是数据结构算法

1372
来自专栏数说工作室

统计师的Python日记【第八天:数据清洗(2)文本处理】

本文是【统计师的Python日记】第8天的日记 回顾一下: 第1天学习了Python的基本页面、操作,以及几种主要的容器类型。 第2天学习了python的函数、...

5196
来自专栏LinkedBear的个人空间

【挑战剑指offer】系列03:逆序打印单链表

本系列的算法原题来自于“牛客网-剑指offer”,写这个板块,不仅仅是解决算法问题本身,更是手动提高难度、自行变式,思考更多的解决方案,以带给自己一些启发。

621
来自专栏专知

不只是支持Windows, PyTorch 0.4新版本变动详解与升级指南

5162
来自专栏C语言及其他语言

[每日一题]台球碰撞

今天这题可大有来头了,湖南省第六届大学生计算机程序设计竞赛题目,比较经典也比较有名 题目描述 在平面直角坐标系下,台球桌是一个左下角在(0,0),右上...

3456
来自专栏大数据文摘

手把手:四色猜想、七桥问题…程序员眼里的图论,了解下?(附大量代码和手绘)

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

洛谷2017 5月月赛R1

我只想说面对这种难度的题目就是冲着20%的数据暴力。。。 分数:40+20+36.1+38+0+19 T1 签到题 III 题目背景 pj组选手zzq近日学会了...

2595
来自专栏极客猴

用 Python 学习数据结构, 有它就不用愁

数据结构,我们对它已经是耳熟能详。对于计算机相关专业的大学生来说,它是一门专业必修课。从事软件开发的人员则把它作为谋生必备技能。这充分体现数据结构的重要性。因此...

552
来自专栏Golang语言社区

麻将游戏的听牌算法

测试测试!!~~~~这两周都是在测试各种BUG,没事情的时候自己在网上学学新知识,也为下个月的游戏改版预热。最近呢我也开始了我的shader之旅,估计也是这充满...

42916

扫码关注云+社区