开学了,没想到我回有机会再写下这样的文字,anyway,再写一次“开学了”,再回到学校,之前的iOS好久都没看了,但是赶脚,赶脚药不能停。
随手记下一些关于递归的神奇思想和原则:
Base Case要有
递归的过程就是不断向base case靠拢的过程
递归之信念
递归の信念(哈哈哈,人家分明叫the recursive leap of faith),就让我这么翻吧:
This psychological strategy—assuming that any simpler recursive call will work correctly—is called the recursive leap of faith.
常见的factorial(4)为例,factorial(4) = 4 * factorial(3),假设factorial(3)是能正确的计算出3!,那么factorial(4)也是绝对正确的算出4!
或者以Hanoi塔为例
void MoveTower(int n, char start, char finish, char temp) {
if (n == 1) {
MoveSingleDisk(start, finish);
} else {
MoveTower(n - 1, start, temp, finish);
MoveSingleDisk(start, finish);
MoveTower(n - 1, temp, finish, start);
} }
也是同样的我们有了递归の信念,我们就可以直接相信这样的算法是没有问题的。
递归的还有一个大胆之处在于在我们甚至没有完成当前函数的完整写法之前我们甚至就开始使用和相信它是可用的。
这与传统的f(x) = f(x-1) + 1 .....(暂时不管base case)又是有所不同的,是因为我们具有的数学能力,我们会相信这个方程就是可行的?
但是递归,特别是距离数学越远的递归(是不是狭隘数学了),真是神奇的存在啊。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。