C语言控制流主要是顺序,分支,循环。这三种方式基本上是语言学上必须提供的三种方式,还有一种特殊的方式是在函数层面,就是递归。
本以为控制流部分其实没有什么好说的,三种基本控制方式都是显而易见的,但是,最近一直研究NFA,发现真是难懂,但是代码写出来就是基本的控制流组成的,后来又想起KMP算法,排序算法,发现这些都是基本控制流组成的。于是我猜想控制流不是简单的表面上的东西,这东西和算法是紧密相关的。
在没有展开说之前,我想说一句我一直以来觉得非常有哲学的一句话“计算机是简单的”!
你仔细想想,如果去除所有这些复杂逻辑,计算机本身就是一个电子与器件的组合,他能做的事情也是0 1 的输出。至于为什么有些人包括本人都觉得计算机学习来总是有障碍,主要的原因还是思维的方式问题。
我们很容易思考一个顺序执行过程的算法,比如说今天做什么,明天做什么,后天做什么等等。但是分支和循环,就很难理解了,尤其是循环和分支组合的时候。
首先我们要明白为什么我们很容易理解一个顺序过程的算法,因为这种思维方式是线性的,画个图就明白了
熟悉线性表的同学肯定熟悉这样的结构。对于这样的结构我们还是很容易理解的。
如果单纯的是分支结构,我们也是很好理解的,因为分支结构虽然说是一种类似于树状的一种图状结构,但是单纯的某一个分支其实还是线性的结构。