递归包含了递推和化归两种思想。递推就是由已知推未知,化归就是复杂转化成简单,把新情况转化成旧情况。
核心机制: 抓住变化的根源或主线。
递归解题三步骤:(1)从简单入手;(2)找递归式;(3)求通项。
一、切饼问题
或称直线切平面。考虑以下几种情况,
(1)n条直线相交能最多将平面分割成多少份(记为Ln)?
(2)n条V型折线相交最多能将平面分割成多少份(记为Vn)?
(3)n条Z型折线呢(记为Zn)?
嗯,开始吧。从简单入手,当n=0,显然L 0=V 0=Z 0=1;n=1时,L 1=V 1=Z 1=2;n=2时,看下面:
图1 当n=2时,饼被分成多少块
第二步,找递归式,就是找Z
n与Z
n-1的关系了(仅以Z
n为例,L
n和V
n同样适用)。这里就要从核心机制的角度思考了,到底变化的根源是什么,怎样才能把握变化的规律。在这里,把分割线视作刀,平面视作大饼。饼的块数的变化当然是由刀切所引起。这里把第n条分割线定义为切线,意思就是第n次该它去切饼了。一块饼,一刀下去只能一块变两块,即增加1块。但由于n-1条前任切线的作用,一刀下去切的可能就不止一块饼了。到底最多能切上多少块呢?那就要看切线被其它的n-1条前任切线分割成多少小切线了。这里的小切线包括线段、射线以及那个天生的尖角--折线(见图1中右图5和9)。姑且称这些小切线为有效刀好了。因为它们都能把一块饼切成两块(你没见过一刀可以将一块饼切成三块的吧?)。所以有效刀的数量就是新增的饼块数。
问题转化为求一条Z型线与n-1条Z型线相交,它最多被分成多少个部分了。受书中关于L n的求法的启发,只需看这条Z型线与n-1条其它Z型线相交得到多少个交点即可。容易看出,两两相交,有9个交点,那么与n-1个相交,共有9(n-1)交点。9(n-1)个点能把一条线分成多少份?把手掌搬开一算就知道是9n-8份了。
于是, Z n=Z n-1 +9n-8。
第三步,求通项,该递推式较简单,不再叙述。结果如下(由于该blog不支持分数表示,故用括号):
rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1.A78%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"> rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1.A78%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_editdata.mso"> rel="OLE-Object-Data" href="file:///C:%5CDOCUME%7E1%5CADMINI%7
核心机制: 抓住变化的根源或主线。
递归解题三步骤:(1)从简单入手;(2)找递归式;(3)求通项。
一、切饼问题
或称直线切平面。考虑以下几种情况,
(1)n条直线相交能最多将平面分割成多少份(记为Ln)?
(2)n条V型折线相交最多能将平面分割成多少份(记为Vn)?
(3)n条Z型折线呢(记为Zn)?
嗯,开始吧。从简单入手,当n=0,显然L 0=V 0=Z 0=1;n=1时,L 1=V 1=Z 1=2;n=2时,看下面:
图1 当n=2时,饼被分成多少块
问题转化为求一条Z型线与n-1条Z型线相交,它最多被分成多少个部分了。受书中关于L n的求法的启发,只需看这条Z型线与n-1条其它Z型线相交得到多少个交点即可。容易看出,两两相交,有9个交点,那么与n-1个相交,共有9(n-1)交点。9(n-1)个点能把一条线分成多少份?把手掌搬开一算就知道是9n-8份了。
于是, Z n=Z n-1 +9n-8。
第三步,求通项,该递推式较简单,不再叙述。结果如下(由于该blog不支持分数表示,故用括号):
rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1.A78%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"> rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1.A78%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_editdata.mso"> rel="OLE-Object-Data" href="file:///C:%5CDOCUME%7E1%5CADMINI%7