递归和归纳法课件.ppt
《递归和归纳法课件.ppt》由会员分享,可在线阅读,更多相关《递归和归纳法课件.ppt(20页珍藏版)》请在三一办公上搜索。
1、(1)递归递归是一种十分重要的程序设计方法,对于一些问题,用递归方法设计算法可使算法简洁明了,逻辑清晰,易于设计。递归指算法自己调用自己,相应的算法称为递归算法。递归分类:直接递归与间接递归递归方法:解决一类满足递归关系的问题。递归本质:对原问题的求解可转化为对其性质相同的子问题的求解。,基于归纳的递归算法(递归概念),基于归纳的递归算法(递归概念),例子:计算阶乘函数,算法 计算阶乘函数 输入:输出:过程:1if n=0 then return 12 else return n*fatorial(n-1),递归关系(特性):产生递归的基础。递归出口(结束条件):确定递归的层数。参数设置:参数
2、表示了原问题及其不同的子问题。,基于归纳的递归算法(归纳的思想方法),(2)归纳法的思想方法 对于一个规模为n的问题p(n),归纳法的思想方法是:基础步:a1是问题p(1)的解。归纳步:对所有的k,1kn,若b是问题p(k)的解,则p(b)是问题p(k+1)的解。其中,p(b)是对问题的某种运算或处理。,例如。因为a1是问题p(1)的解,若a2=p(a1),a2是问题p(2)的解;以此类推,an-1是问题p(n-1)的解,且an=p(an-1),则an是问题p(n)的解。因此,求解问题p(n)的解an,可先求问题p(n-1)的解an-1,然后再对an-1进行p运算或处理。为求问题p(n-1)的
3、解,先求问题p(n-2)的解,如此不断进行递归求解。直至p(1)为止。当得到p(1)的解之后,再返回来,不断地把所得的解进行p运算或处理,直至p(n)的解为止。这就是基于归纳的递归算法的思想方法。,基于归纳的递归算法(选择排序),例5.1 基于递归的选择排序 假定要对n个元素的数组A进行排序,可以如下进行:,基础步:当n=1时,数组A2n的最小者Aj,Aj与A1交换,A1有排序。归纳步:如果A1n-1的n-1个元素已经排序,则An有序。,算法5.1 SelectionSort 输入:n个元素的数组A1n 输出:按非降序排列数组A1n 1.sort(1)过程 sort(i)1 if in the
4、n 2 k=i,基于归纳的递归算法(选择排序),3 for j=i+1 to n 4 if AjAk then 5 k=j 6 end for 7 if ki then 互换Ai和Ak 8 sort(i+1)9 end if,最坏情况下时间复杂性算法分析:由基础步知:当n=1时,A1要有序,元素比较次数为n-1;当A1n-1已经排序,即前n-1个元素有序时,An自然有序。可由归纳步知,总比较次数C(n)为:,基于归纳的递归算法(插入排序),例5.2 基于递归的插入排序 假定要对n个元素的数组A进行排序,可以如下进行:,基础步:当n=1时,数组只有一个元素,它已排序。归纳步:如果前面k-1个元素
5、已经排序,只要对第k个元素逐一与前面的k-1个元素比较,把它插入适当位置,即可完成k个元素的排序。,算法 InsertionSort输入:n个元素的数组A1n输出:按非降序排列数组A1n1.sort(n)过程:sort(i)1if i1 then2x=Ai3sort(i-1),基于归纳的递归算法(插入排序),3j=i-1 4 while j0 and Ajx 5Aj+1Aj 6 j=j+1 7 end while 8Aj+1=x 9 end if,最坏情况下时间复杂性算法分析:由基础步知:当n=1时,即只有一个元素已经有序,元素比较次数为0;当n1时,可由归纳步知,总比较次数C(n)为:,基于
6、归纳的递归算法(整数幂),例5.3 整数幂 用一个高效的方法求实数x的n次幂,其高效算法描述如下:,算法 Exprec输入:实数x和非负整数n输出:1.power(x,n)过程:power(x,m),基于归纳的递归算法(整数幂),if m=0 then y=1 else y=power(x,m/2)y=y2 if m为奇数 then y=xy end if7 return y,最坏情况下时间复杂性算法分析:乘法次数C(n)为:,例5.4 设有n阶多项式:Pn(x)=anxn+an-1xn-1+a1x+a0 则根据Horner规则,得 Pn(x)=(an)x+an-1)x+an-2)x+an-3
7、)x)x+a1)x+a0Pn(x)=x Pn-1(x)+a0由归纳知:,基于归纳的递归算法(n阶多项式),基础步:当n=0时,有P0(x)=an。归纳步:对于任意的k,1kn,如果前面k-1步已计算出pk-1:Pk-1(x)=anxk-1+an-1xk-2+an-k+2x+an-k+1 则有:Pk(x)=x Pk-1(x)+an-k,算法 HORNERERC 输入:非负正数n,实数序列a0,a1,an和实数x 输出:n次多项式Pn(x)=anxn+an-1xn-1+a1x+a0的值 1 hn(n,x)过程 hn(m,x)1 if m=0 then 2 return an 3 else 4 p=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 递归 归纳法 课件
链接地址:https://www.31ppt.com/p-6014208.html