java递归实现
来源:互联网 发布:淘宝男装最出名的店 编辑:程序博客网 时间:2024/06/06 05:37
所谓递归 (Recursion),就是方法调用自身
对于递归来说,一定有一个出口,让递归结束,只有这样才能保证不出现死循环
n!=n*(n-1)*(n-2)....*2*1
n!=n*(n-1)!
f(x)=n*f(x-1)
(n-1)!=(n-1)(n-2)
题目:用递归实现,5*4*3*2*1的结果
思路:
5*compute(4)
5*compute(3)
5*compute(2)
5*compute(1)
public class Test1{//循环计算阶乘,也叫迭代方式public int compute(int number){int result=1;for(int i=number;i>0;i--){result*=i;}return result;}//用递归方法实现public int compute2(int number){if(1==number){return 1;}else{return number*compute2(number-1);}}public static void main(String[] args){Test1 test=new Test1();System.out.println(test.compute(5));System.out.println(test.compute2(5));}}输出结果:
120
120
两种方式结果都一样,推荐使用第二种方式
斐波那契数列
题目:实现一个斐波那契数列,1,1,2,3,5,8,13,21.......
思路:先找到出口点,当n等于1或者2的时候都等于1,斐波那契数列公式(n-1)+(n-2)
public class Fab{public int compute(int number){if(1==number||2==number){return 1;}else{return compute(number-1)+compute(number-2);}}/** * @param args */public static void main(String[] args){Fab fab=new Fab();System.out.println(fab.compute(8));}}
输出结果:
21
题目:用递归实现列出一个文件夹下所有的目录,按XXXX一级目录
XXXX二级目录
XXXX三级目录
的格式来显示
import java.io.File;import java.util.ArrayList;public class ListAllTest{ //用于判断目录所处的层次private static int time;public static void deepList(File file){if(file.isFile()||0==file.listFiles().length){return;}else{File[] files=file.listFiles();files=sort(files);for(File f:files){StringBuffer output=new StringBuffer();if(f.isFile()){output.append(getTabs(time));output.append(f.getName());}else{output.append(getTabs(time));output.append(f.getName());output.append("\\");}System.out.println(output);if(f.isDirectory()){time++;deepList(f);time--;}}}}//整理文件,使得目录在文件之前public static File[] sort(File[] files){ArrayList<File> sorted=new ArrayList<File>();//寻找到所有的目录for(File f:files){if(f.isDirectory()){sorted.add(f);}}//寻找到所有的文件for(File f:files){if(f.isFile()){sorted.add(f);}}return sorted.toArray(new File[files.length]);}//判断需要加多少tab方法private static String getTabs(int time){StringBuffer buffer=new StringBuffer();for(int i=0;i<time;i++){buffer.append("\t");}return buffer.toString();}public static void main(String[] args){File file=new File("F:/TDDOWNLOAD");deepList(file);}}
输出结果如下:
开发工具\
Dreamweaver8 green.rar
mars\
重构_改善既有代码的设计.rar
Java设计模式.rar
面试技巧\
01面试题目.rar
02上机题目.rar
JAVA学习资料.txt
Linux_SDK开发指南_V1.0_-_20130205.doc
test.rar
- java递归算法实现
- java递归实现
- java递归算法实现
- java递归实现汉诺塔
- 递归算法 Java实现
- Java递归实现组合
- Java实现排列组合--递归
- java递归算法实现
- Java递归实现汉诺塔
- java实现递归
- java实现递归求和
- java 实现递归实现tree
- java 实现二叉树【递归/非递归】
- 【java】java实现回文判断,递归实现
- 回文 用递归实现 java
- java 递归实现二叉树
- java递归实现二分查找
- java代码实现递归@oneToMany
- CDH4 HA方案
- 收集的一些android基础题
- QTouch2(组态)
- php 传递sql语句的处理
- I/O
- java递归实现
- 16周阅读程序123
- IOS开发之UISearchBar自定义外观
- IOS7开发~NSAttributedString
- 经典冒泡排序
- hadoop-2.0.0-cdh4.2.1安装手册
- ASP.NET 实现Base64加密和解密
- uva 11624 - Fire!(bfs,3级)
- ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired