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

相关文章

来自专栏机器学习算法与Python学习

资料 | Python的14张思维导图(可后台下载)

关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 来自:AI科技大本营 下载方式请见文...

3398
来自专栏贾志刚-OpenCV学堂

图形图像算法中必须要了解的设计模式(2)

AI越来越火热,人工智能已然成风!而人工智能最重要是各种算法,因此机器学习越来越受到追捧,算法越来越被重视。

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

【基础编程】侃侃数据结构与算法-扯扯概念

? 为啥扯淡,因为我们开发人员很少用到它,目前流行的android开发有数据结构么?没有,至少你在用api的时候基本上是看不见的。c++有在STL基本容器中s...

36213
来自专栏HansBug's Lab

算法模板——左偏树(可并堆)

实现的功能——输入1 x,将x加入小根堆中;输入2,输出最小值并去在堆中除掉 实现原理——左偏树,这里面维护的是一个小根堆,个人认为其还是没有发挥出左偏树的真正...

3129
来自专栏一个会写诗的程序员的博客

用 Kotlin 的函数式编程 替代 GOF 设计模式用 Kotlin 的函数式编程 替代 GOF 设计模式函数式编程(FP)《Kotlin极简教程》正式上架:

"函数式编程", 又称泛函编程, 是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论。它的基础是 λ 演算(lambda...

884
来自专栏阿凯的Excel

巧妙完成二维表的数据匹配

接下来我将每周分享一个广大网友向我提问的经典问题。 本周问题,如何对二维表进行匹配! 原表格! ? 备注:以上人名,均属虚构,如有雷同!说明有缘!!! 咳...

2693
来自专栏AzMark

Python函数的介绍

1176
来自专栏Danny的专栏

面向对象三大特征

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

822
来自专栏程序生活

文本特征提取Bag of words(词袋)tfidfcsr_matrix

其实我比较疑惑的地方是toarray()这个方法,count_data 为什么可以通过这个方法可以转化成那个样子,后来查了一下资料: 下面是一个关于csr_m...

652
来自专栏Golang语言社区

Gopher面试中的Coding

从四月份下半月开始,陆陆续续面试了几家公司,都是golang的岗位。每一次面试,侧重点都会有不同,有的会直接给过来一道试题, 然后边解题,边讲述自己的思路,然后...

3867

扫码关注云+社区