递归在java语言中应用.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
递归在java语言中的应用 ?两个小经验 ??1.在定义一个类时,不要随意定义成员变量.除非它是这个类的一个属性或者在类的多个方法中要用到?它. ??2. ?? public class Test ?? { ??public static void main(String[] args) ???? ?{ ???? ??byte[] b = new byte[102400*1024]; ???? ?} ?? } ?? 这是一个简单的程序,在写上传文件的程序时极有可能遇到这个情况.比喻说有一个文件的长度是100M.??在读取文件内容时就会这样写byte[] b = new?? byte[102400*1024],但是在运行时会出一个内存越界??错误.在实际应用中一定要非常小心. ? 二 . 递归: ??先看一个小例子: ??? public class Recursion ??? { ????public static void func() ????{ ????? func(); ????} ????public static void main(String[] args) ????{ ????? func(); ????} ??? } ??上面就是一个简单的递归程序,运行一定会把内存吃光,所以在使用递归时一定要加上特定的条件 ?? ??下面再看几个递归的例子. ??(1) . ??public class YueShuTest ??{? ???//求最大公约数 ???public static void yueshu(int num1,int num2) ???{ ????if(num1 == num2) ????{ ?????System.out.println (num1); ????} ????else ????{ ?????yueshu(Math.abs(num1 - num2),Math.min(num1,num2)); ????} ???} ? ???//求二进制 ???public static void binary(int num) ???{ ????if(num 0) ????{ ?????binary(num / 2); ??????? System.out.print (num % 2); ????} ???}?? ??} ??下面在看一个最经典的汉诺塔问题(很复杂的一个问题). ??public class Hanon ??{ ???static void hanon(int n,char a,char b,char c) ???{ ????if(n == 1) ????{ ?????move(1,a,c); ?????return; ????} ??? ????hanon(n - 1,a,c,b); ????move(n,a,c); ????hanon(n - 1,b,a,c);? ???} ??? ???static void move(int n,char a,char c) ???{ ????System.out.println (n + : + a + -- + c); ???} ??? ???public static void main(String[] args) ??? { ???? ?hanon(3,A,B,C); ???? } ?} ?看看,一个多么复杂的问题这么几行代码就搞定了.递归的威力无穷啊! ?再来看一个更复杂的. ??import java.io.*; ?? ??class FileWrapper extends File ??{ ???private boolean bLast = false; ???private FileWrapper parent = null; ???public FileWrapper(File f,boolean bLast,FileWrapper parent) ???{ ????super(f.getPath()); ????this.parent = parent; ????this.bLast = bLast; ???} ??? ???public FileWrapper getMyParent() ???{ ????return parent; ???} ??? ???public boolean isLast() ???{ ????return bLast; ???}? ??} ?? ?? ??public class FileTree ??{ ???//第一种方法. ???/*public static String makeSpaces(int level) ???{ ????StringBuffer sbf = n

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档