
递推算法是来自一种用若干步可重复运算来描述复杂问题的方法。递推是序360百科列计算中的一种常用算法。通常是通过计算前面的一些项来得出威示子读黑序列中的指定项的值。
- 中文名称 递推
- 外文名称 TheRecursive
基本介绍
递推是按照一定的规律来计算序列中的每个项,通常是通过计算前面的一些项来得出序列中的指定项的值。其思想是把一个复杂的庞大的计算过程转化为简单过程的多次重复,该算法利用了计算机速度快和不知疲倦的机器特点。
递推算法
来自【例1】
植树节那天,有五位同学参加了植树活动,他们完成植树的棵树都不相同。问第一位同学植了多少棵时,他指着旁边的第二位同学说比360百科他多植了两棵;追问第二位同学,他又业合语识奏说比第三位同学多植了两棵;... 如此,都说略油示套球比另一位同学多植两棵。最后问到第五位同学时,他说自己植了10棵。到底第一位同学植了多少棵树?
分析:设第一位同学植树的棵树为a1,欲求a1,需从第镇原亮官广维下办临五位同学植树的棵数a5入手,根据"多两棵"这个规律,按照一定顺序逐步进行推算:
(1) a5=10;
(2) a4=a5+2=12;
(3) a3=a4+2=14;
(4) a2=a3+2=16;
(5) a1=a2+2=18;
Pascal程序:
Program Examl;
Var i,a:byte;
begin
a:=10晶结察;
for i:= 1 to 4 do
a:=a+2;
writeln('The 殖掉Num is' ,a);
readln;
夫 end.
本程序的递推运算可用下图示表示:
初始值a:=10 比船----- i=1,a=a+2(12) ----- i=2,a=a+2(14) ------ i=3,a=a+2(16) ----- i=4,a=a+2(18) --督再沙名料棉往诉轴脱-- 输出a值
例2:
十本不同的书放复滑院镇求究除行部在书架上。现重新摆放,使每本书都不在原来放的位置。有几种摆法?
当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用M(距轻械音游n)表示,那么M(n-1)就表示n-1个编号元素放在n-1个编号位置,各不对应的方法数,其它类推.
第一步,把第n个元素放在一个位置,比如位置k,一精向肉共有n-1种方法;
第二步,放编号为k的元素,这时有两种情况.1,把它放到位置n,那么,对于剩下的n-2个元素,就有M(n-2)种方审微置钢压怕法;2,不把它放到位置n,这时,对于这n-1个元素,有M(n-1)种方法;
综上得到
M杀黑社阻轴位类害策(n)=(n-1)[M(n-2)+M(n-1)]
递推算法以初始(起点)值为基础,用相同的运算规律,逐次重复运算,直至运算结束。这种从"起点"重复相同的方法直至到达一定"边界",犹如单向运动,用例起他车周敌总你循环可以实现。递推众十夫场缩代龙盾资的本质是按规律逐次推出(计算)先一步的结果。