李元芳奉狄大人之命捉拿杀人凶手赵四。
这位赵四穷凶极恶又诡计多端,在元芳追捕他的一个多月中屡屡在最后关头逃脱。
这次元芳好不容易跟上了他,没想到一个转弯赵四又不见了。
元芳在转弯的路口停下来思考赵四可能会往哪个方向走:
“向西南走是荒无人烟的沙漠,没有摸清楚地形根本无法从沙漠中走出来;往东走100里是城镇,他应该要往这个方向走。”
元芳刚要纵马向东,却又停了下来:
“但以赵四的智计,他很可能反其道而行之,偏偏向西南走来摆脱我的追捕。”
“他也可能想到我想到了他会反其道而行之,来个反反得正,还往东走。”
“他还可能”……
就这样李元芳在路口站了一天一夜。
递归
在程序设计中,程序调用自身的编程技巧称为递归。
简单来说,递归就是自己的嵌套。俄罗斯套娃中的嵌套,音乐中的转调嵌套,埃舍尔画中的嵌套,李元芳在对方的角度调用自己的嵌套。
在数学中,斐波那契数列是递归最好的例子:
1,1,2,3,5,8,13,21,34……
用数学式表示:
FIBO(n)= FIBO(n-1)+ FIBO(n-2),(n>2)
FIBO(1)=1, FIBO(2)=1
在斐波那契数列中,一个数是它之前两个数的和。这种自己与自己建立的联系就是递归关系。
在音乐中,音乐家利用调性的嵌套来引起人们的紧张感。
音乐的紧张和解决
调性是调的主音和调式类别的总称。比如“C大调”、“G小调”等。
如果一首音乐是“C大调”,它通常意味着音乐从音符C开始,在音符C上结束。音符C就是这首音乐的主音。
听众在开始聆听一首音乐时,会建立起对回归主音的一种期待,伴随着紧张感,当音乐结束在主音上时,紧张解决了,听众会感受到“这就是音乐的结束”般的满足感。
音乐进行中,脱离原来的调性而进入另一调性称转调。进入的另一调性称副调。
转调后这首音乐可能暂时从“C大调”进入了“G小调”,这时听众对回归音符C的期待暂时被搁置了,建立起了对回归音符G的期待和紧张。
当音乐回归到音符G上,副调的紧张被解决了,听众重新感受到了回归主调音符C的紧张感。这时听众感受到的紧张会比转调之前更甚。
事实上,人们这种听音乐的方式就是递归的。
C大调→等待回归主音C的全局紧张→转调至G小调→回归主音C的全面紧张被搁置→等待回归音符G的局部紧张→回归音符G解决局部紧张→重新等待回归主音C的全面紧张→ 回归主音C解决全局紧张
听众暂时存放回归主音的紧张感的地方,用计算机的术语来说,就是堆栈。(想象着把书一本本放到盒子里再一本本拿出来,这个盒子就是一个堆栈)
在巴赫的《和声小迷宫》(BWV 591,Kleines harmonisches Labyrinth (“Little Harmonic Labyrinth”))中,巴赫用急剧转换的调子欺骗听众,让听众迷失在音乐的迷宫中,忘记了真正的主调音在哪。这说明了人们存放调性的“堆栈”是很浅的。
画中的嵌套和“副本”
如果说音乐的递归过于感性和抽象了,图画中的递归更容易被理解。
人们可以清楚地“感受”到,画中的鱼是自己嵌套自己形成的图案。
鱼→鱼 的鳞片是鱼→鱼的鳞片的鱼 的鳞片是鱼→ 鱼的鳞片的鱼的鳞片的鱼 的鳞片是鱼→……
(形容这幅画的语言也是一种递归)
其实每片鳞片上的鱼并不完全相同,不仅是大小不同,形状上也有些微的差异。但人们却普遍认同这幅画中自我嵌套的意义,认为小鱼是大鱼的一个“副本”。每个人的DNA也被认为是这个人的一个极其复杂的“副本”。人们是如何判断它们是否相同的?
这种同一性还隐含在人们对一位作家、画家或音乐家所有作品相似的感受中。这种相似的感受被称为一位艺术家的风格。这些风格又是如何被人从不同的作品中归纳出来的?
递归是事物自己嵌套自己,但对“自己”的判断到底有多大的范围?
这引出了《GEB》中最深刻的问题之一:
什么时候两个东西是一样的?
对这个问题的讨论将在学习《GEB》的过程中一直伴随我们。
赵四的下场
李元芳最后还是抓到了赵四。
原来赵四到了岔路口也开始思考李元芳会怎么想,他要如何反其道行之,反反其道行之,反反反……
他还没思考完就听到李元芳在身后追来的声音,只好躲在了岔路口的一棵树后面。“这下刚好,他无论走哪边我都可以摆脱他了。”赵四如是想到。
赵四没想到的是李元芳骑在马上在岔路口前站了一天一夜。最后是赵四实在憋不住尿了,只好跑出来乖乖就擒。
在被绑回大牢的路上,赵四问李元芳是怎么发现他哪都没去的。李元芳害羞地一笑,答道:
“哪里是我发现你了,只是我忘记给我的递归设置参数了。”