今天情人节,首先祝大家节日快了。可是我还在苦逼的发帖子。
不多说今天的节日了,直接进入主题。
最近在看王晓华的《算法的乐趣》,看了chapter 05,看过之后就用 labview去解决书中提到的问题,也即三个水桶等分8升水问题。
书中用到了递归的思想。关于递归,我之前总认为递归对程序开发者而言是可有可无的,但是我看了算法的乐趣前几章之后,再也不这样认为了。递归是很多算法实现的基础,虽然从理论上讲递归可以用循环替代,但递归这种思想符合人类思考问题的方式。在很多问题中,采用递归可以大大提高代码的可读性,而且编程容易实现。而这时如若非要才要循环的方式可能让你绞尽脑汁都无法实现,而且还很容易出错
LabVIEW中也可以编写递归函数,但有一点必须注意。就是需要到proper ties中的execution中设置VI为可重入,只有这样才能保证子VI可以递归。原因是新建的VI默认都是不可重入的,如果不可重入当然就不能再调用自己,因此也就无法实现递归。
知道了如何设置递归之后,就可以按照《算法的乐趣》中的解题思路去编写递归搜索方法。最后实现的程序如下:
程序中SearchState函数和SearchStateOnAction函数为递归函数,需要按照上面所讲的方法设置为可重入。其它VI则为普通函数,不需要做任何修改。
运行SearchState函数即可在对话框中分别显示所有找到的方法。运行程序可知一共有16种方法,和《算法的乐趣》一书答案一样。
2
|
|
|
|
今天看了下《算法的乐趣》ch6:妖怪和和尚过河问题。用到的算法和思路完全等同于ch5,因此就不再写相应的LabVIEW程序了。有着时间更好地理解下程序中间的递归更重要!
这周我还想看看ch03省下的google问题的,发现C语言知识忘记了很多。
|
|
|
|
|
shi_dongyu 发表于 2017-2-15 21:36
今天看了下《算法的乐趣》ch6:妖怪和和尚过河问题。用到的算法和思路完全等同于ch5,因此就不再写相应的LabVIEW程序了。有着时间更好地理解下程序中间的递归更重要!
这周我还想看看ch03省下的google问题的,发现C语言知识忘记了很多。 ...
期待楼主继续分享
|
|
|
|
|
最近看到爱因斯坦问题,表示看的很吃力,作者用C++写的,我C++也忘的差不多了。
感觉有点看不下去了
|
|
|
|
|
厉害了.............................................
厉害了.............................................
厉害了.............................................
|
|
|
|
|