- 3
- 0
- 约4.6千字
- 约 7页
- 2016-12-21 发布于北京
- 举报
递 归 的 应 用1、/*递归的经典例子很多,许多基础课本都会讲到“汉诺塔”,这个,就不给你了,上网搜,相当多的。不过,楼上大哥说递归都可以用循环解决,可能是小弟俺所学太少,无法苟同。下面, 是用递归实现批量文件的复制。(当然,你千万别以为我递归的是文件,只是文件名)。之所以要用递归,是因为,文件夹是可以一个套一个,它套了多少个,你不知道。如果不用递归,恐怕只能复制有限层文件夹及文件,且你的代码相当长。这个Copy.java实现的功能是将e盘文件夹1中的所有东西复制并按照原来文件夹的结构放入e:\\1x中,这与在操作系统中的复制粘贴是一样的。只不过,通过设置数组b的大小,可以有效地控制复制的速度(尤其在复制大文件时可以看出的区别)。*/import java.io.*;public class Copy { static String s=e:\\1x; public void xcopy(File f) { for(File f1:f.listFiles()) { File f2=new File(s+(f1.getPath().replace(e:\\1,))); if(f1.isDirectory()) { f2.mkdirs(); xcopy(f1); } else { try { FileInputStream fis=new FileInputStream(f1); FileOutputStream fos=new FileOutputStream(f2); byte b[]=new byte[1000]; while(fis.available()0) { fis.read(b); fos.write(b); } fos.flush(); fis.close(); fos.close(); } catch(IOException e) { System.out.println(Error); } } } } public static void main(String args[]) { File f=new File(e:\\1); new Copy().xcopy(f); }}2、汉诺塔问题A B C三个杆子,把B杆的4个碟子(底座最大,倒数第二层次之,倒数第三层次之,第一层碟子最小)全部移到A杆上,最少需移动多少次注:用浅显易懂的方式解答!!!3. [递归的描述] 由上面的例子可以看出,一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。因此,在考虑使用递归算法编写程序时,应满足两点:1)该问题能够被递归形式描述;2)存在递归结束的边界条件。 递归的能力在于用有限的语句来定义对象的无限集合。用递归思想写出的程序往往十分简洁易懂。[例2] 给出一棵二叉树的中序与后序排列。求出它的先序排列。[分析] 通过对比二叉树的中序与后序排列,我们可以找出根节点及左右子树。同样的,有可以通过对比左子树的中序与后序排列,找出左子树的根节点……可见,该问题能够被递归描述。当找到最后一个根节点时,递归无法再进行下去,这就是递归结束的边界条件。由此可见,递归算法中常常隐含了分治思想。程序如下:program chu01_3; var z,h: string; procedure find(a,b:string); var s,l : integer; begin l:=length(b); if l=1 then Write(b) {边界条件及递归返回段} else begin {递归前进段} Write(b[l]); s:=pos(b[l],a); if s-10 then find(copy(a,1,s-1),copy(b,1,s-1)); {递归左子树} if l-s0 then find(copy(a,s+1,l-s),copy(b,s,l-s)); {递归右子树} end; end; begin Readln(z); Readln(h); Find(z,h); Readln; end.[递归的应用]1.经典递归 例如hanoi塔问题:经典的递归,原问题包含子问题。有些问题或者数据结构本来就是递归描述的,用递归做很自然。2.递归与递推 利用递归的思想建立递推关系,如由兔子生崽而来的fibonacci数列。但递推由于没有返回段,因此更为简单,有时可以直接用循环实现。3.分治 不少分治方法是源于递归思想,或是递归分解+合并处理。4.回溯 规模较小的问题用回溯解决比较自然。注意递归前后要保证现场的保存和恢复,即正确的转化问题。5.动态规划 动态规划的子问题重叠性质与递归有某种相似之处。递归+动态修改查表是一种不错的建立动态规划模型的方法
您可能关注的文档
- 远程教育——农村基础教育的最佳链接.doc
- 远程教育主要内容.doc
- 远程教育优点及质量保证体系体系研究文献综述.doc
- 远程教育在小学数学教学中的作用.doc
- 远程教育管理与运用交流材料.doc
- 远程教育过程管理的研究(定稿).doc
- 远程更换语音提示器操作及原理说明.doc
- 远程更换语音提示器操作说明.doc
- 远程第二次作业.docx
- 连云港市教科所承认通讯.doc
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
原创力文档

文档评论(0)