记得曾经有位图灵奖得主回忆自己写过最得意的程序时,他列出了一个C语言的自我打印程序。依稀记得有百行之多,好像还用了很多数组。现在想想构建这样一个程序的诀窍可以抽象的描述成:
A"AB"B
其中"AB"是程序中出现的字符串,AB分别是前后的程序代码。
B中的程序功能需包括,打印"AB"的A部分,打印",打印"AB",打印",最后打印"AB"的B部分。
这个问题的难点在于会使人产生无限递归定义的困境。
但如果看破其中的秘密,也就没什么了。