递归与回溯精选PPT.ppt
《递归与回溯精选PPT.ppt》由会员分享,可在线阅读,更多相关《递归与回溯精选PPT.ppt(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、递归与回溯第1页,此课件共28页哦重点内容n递归的概念递归的概念n递归的表示递归的表示n递归实现方法递归实现方法n用递归实现简单回溯算法用递归实现简单回溯算法n实现递归时应注意的几个方面实现递归时应注意的几个方面n递归与递推的区别和联系递归与递推的区别和联系第2页,此课件共28页哦递归的概念n先看大家都熟悉的一个民间故事:从前有座山,山上有座庙,先看大家都熟悉的一个民间故事:从前有座山,山上有座庙,庙里有一个老和尚在给小和尚讲故事,故事里说,从前有座山,庙里有一个老和尚在给小和尚讲故事,故事里说,从前有座山,山上有座庙,庙里有一个老和尚在给小和尚讲故事,故事里说山上有座庙,庙里有一个老和尚在给
2、小和尚讲故事,故事里说。象这样,一个对象部分地由它自己组成,或者是按它自。象这样,一个对象部分地由它自己组成,或者是按它自己定义,我们称之为递归。己定义,我们称之为递归。n一个函数、过程、概念或数学结构,如果在其定义或说一个函数、过程、概念或数学结构,如果在其定义或说明内部又直接或间接地出现有其本身的引用,则称它们明内部又直接或间接地出现有其本身的引用,则称它们是递归的或者是递归定义的。在程序设计中,过程或函是递归的或者是递归定义的。在程序设计中,过程或函数直接或者间接调用自己,就被称为递归调用。数直接或者间接调用自己,就被称为递归调用。第3页,此课件共28页哦递归的特点与应用场合递归的特点与
3、应用场合n用递归方法编写的问题解决程序具有结构清晰,可读用递归方法编写的问题解决程序具有结构清晰,可读性强等优点,且递归算法的设计比非递归算法的设计性强等优点,且递归算法的设计比非递归算法的设计往往要容易一些,所以当问题本身是递归定义的,或往往要容易一些,所以当问题本身是递归定义的,或者问题所涉及到的数据结构是递归定义的,或者是问者问题所涉及到的数据结构是递归定义的,或者是问题的解决方法是递归形式的时候,往往采用递归算法题的解决方法是递归形式的时候,往往采用递归算法来解决。来解决。第4页,此课件共28页哦递归的实现方法递归的实现方法递归是借助于一个递归工作递归是借助于一个递归工作栈栈来实现来实
4、现.1.递推递推:问题向一极推进,这一过程叫做递推;这问题向一极推进,这一过程叫做递推;这一过程相当于压栈一过程相当于压栈.2.回归回归:问题逐一解决,最后回到原问题,这一过问题逐一解决,最后回到原问题,这一过程叫做回归。这一过程相当于弹栈程叫做回归。这一过程相当于弹栈.第5页,此课件共28页哦一个简单的实例一个简单的实例n将将n个不同颜色的球个不同颜色的球,分别放到分别放到n个不同的盒子中去个不同的盒子中去,问有多少种放法问有多少种放法?n分析分析:显然所有的方法数为显然所有的方法数为 n!这样这样,对于任意输入的整数对于任意输入的整数n,我们只要算出我们只要算出n!即可即可n设设f(n)=
5、n!,则有,则有,第6页,此课件共28页哦用递归实现Var n:integer;t:longint;function f(n:integer):longint;beginif n=0 then f:=1else f:=n*f(n-1)end;beginwrite(n=);readln(n);t:=f(n);writeln(n!=,t);end.第7页,此课件共28页哦N=3时的递归过程第8页,此课件共28页哦第9页,此课件共28页哦第10页,此课件共28页哦递归的表示nHanoi塔问题塔问题n进制转换问题进制转换问题n快速排序快速排序n归并排序归并排序n皇后问题皇后问题n背包问题背包问题n地图
6、着色问题地图着色问题n第11页,此课件共28页哦用递归实现回溯算法用递归实现回溯算法 回回溯溯法法也也叫叫试试探探法法,每每次次试试着着往往前前走走,一一直直走走到到不不通通,然然后后撤撤回,重新试探回,重新试探procedure run(当前状态);(当前状态);var i:integer;begin if 当前状态为边界当前状态为边界 then begin if 当前状态为最佳目标状态当前状态为最佳目标状态 then 记下最优结果;记下最优结果;exit;回溯回溯 end;for i算符最小值算符最小值 to 算符最大值算符最大值 do begin 算符算符i作用于当前状态,扩展出一个子状
7、态;作用于当前状态,扩展出一个子状态;if(子状态满足约束条件子状态满足约束条件)and(子状态满足最优性要求子状态满足最优性要求)then run(子状态子状态)end;end;第12页,此课件共28页哦回溯法的几个重要因素回溯法的几个重要因素(1)状态状态:作为递归的值参。作为递归的值参。(2)边界条件边界条件:作为递归的结束条件。作为递归的结束条件。(3)递归范围递归范围:作为作为for循环的初值和终值。循环的初值和终值。(4)约束条件约束条件:满足解的条件。满足解的条件。(5)最优性要求:满足最优解的条件。最优性要求:满足最优解的条件。第13页,此课件共28页哦N皇后问题 在在N*N的
8、棋盘上放置的棋盘上放置N个皇后而彼此不受攻击(即在棋盘的任一行,任一列和任一个皇后而彼此不受攻击(即在棋盘的任一行,任一列和任一对角线上不能放置两个皇后),编程求解所有的摆放方法。对角线上不能放置两个皇后),编程求解所有的摆放方法。第14页,此课件共28页哦基本思想基本思想n由于皇后的摆放位置不能通过某种公式来确定,因此对由于皇后的摆放位置不能通过某种公式来确定,因此对于每个皇后的摆放位置可以进行试探;于每个皇后的摆放位置可以进行试探;n按行放置皇后,每一行放一皇后;按行放置皇后,每一行放一皇后;n对每一行所放置的皇后按列进行试探;对每一行所放置的皇后按列进行试探;n若某个位置能放,则放,否则
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 递归 回溯 精选 PPT
限制150内