归纳与递归
如果我们知道如何求解规模为n-1的问题,那么我们的任务就化为如何把解法扩展到规模为n的问题。
想必大家都听过这样一个故事,从前有座山,山上有座庙,庙里有个老和尚,老和尚他说从前有座山,山上有座庙,庙里有个老和尚,老和尚他说从前有座山,山上有座庙,庙里有个老和尚,老和尚他说从前有座山,山上有座庙,……。这个故事没完没了的重复着,直到讲故事的人烦了、累了才会停下来。这个故事就是一个典型的递归的例子,故事中直接调用了故事本身,从而使得这个故事永无止境的扩展下去。
递归的定义
递归:参见“递归”。
什么?这个定义什么也没有说呀!好吧,改一下:
递归:如果你还没有明白递归式什么意思的话,参见“递归”。
哦,也许这次你明白了:原来递归就是“自己用到自己”的意思。这个定义比上面要好一些,因为当你终于悟出其中的道理后,就不必继续“参见”下去了。事实上,递归的含义比这个要广——
A经理:“这事不归我管,你去找B经理。”于是你去找B经理。
B经理:“这事不归我管,你去找A经理。”于是你回到了A经理这儿。
接下来发生的事情就不难想到了:只要两个经理的说辞不变,你又始终听话,你将会永远往返于两个经理之间,这叫无限递归。
回忆一下,正整数是如何定义的?正整数是1,2,3,…这些数。这样的定义也许对于小学生来说是没有任何问题的,但当你开始觉得这个定义“不太严密”时,你或许会喜欢这样的定义:
(1)1是正整数;
(2)如果n是正整数,n+1也是正整数。
(3)只有通过(1)、(2)定义出来的才是正整数。
这样的定义也是递归的:在“正整数”没有定义完时,就用到了“正整数”的定义!这和前面的“参见递归”是完全一样的,本质是相同的,只是没有那么直接。偶数的定义也是递归的