递归练习理解
来源:互联网 发布:win10自动安装软件 编辑:程序博客网 时间:2024/06/05 14:58
递归:方法自己调用自己
用递归求阶乘
求5的阶乘 * 5! * 5 * 4 * 3 * 2 * 1 * * 5 * fun(4)(代表4!) * 4 * fun(3)(代表3!) * 3 * fun(2)(代表2!) * 2 * fun(1)(代表1!)
public class digui {public static void main(String[] args) {//5!int result = 1;for(int i = 1; i <= 5; i++) {result = result * i;}System.out.println(result);System.out.println(fun(25));System.out.println(fun(1000));//0;超出了int范围}public static int fun(int num) {if(num == 1) {return 1;}else {return num * fun(num - 1);}}}
递归的弊端:不能调用次数过多,容易导致栈内存溢出递归的好处:不用知道循环次数 构造方法是否可以递归调用? * 构造方法不能使用递归调用,否则无穷尽也递归调用是否必须有返回值? * 不一定(可以有,也可以没有)
练习需求:从键盘输入接收一个文件夹路径,打印出该文件夹下所有的.java文件名
public class dtest {/** * 分析: * 从键盘接收一个文件夹路径 * 1,如果录入的是不存在,给与提示 * 2,如果录入的是文件路径,给与提示 * 3,如果是文件夹路径,直接返回 * * 打印出该文件夹下所有的.java文件名 * 1,获取到该文件夹路径下的所有的文件和文件夹,存储在File数组中 * 2,遍历数组,对每一个文件或文件夹做判断 * 3,如果是文件,并且后缀是.java的,就打印 * 4,如果是文件夹,就递归调用 */public static void main(String[] args) {File dir = getDir();printJavaFile(dir);}/* * 获取键盘录入的文件夹路径 * 1,返回值类型File * 2,不需要有参数 */public static File getDir() {Scanner sc = new Scanner(System.in);//创建键盘录入对象System.out.println("请输入一个文件夹路径");while(true) {String line = sc.nextLine();//将键盘录入的文件夹路径存储File dir = new File(line);//封装成File对象if(!dir.exists()) {System.out.println("您录入的文件夹路径不存在,请重新录入");}else if(dir.isFile()) {System.out.println("您录入的是文件路径,请重新录入文件夹路径");}else {return dir;}}}/* * 获取文件夹路径下的所.java文件 * 1,返回值类型 void * 2,参数列表File dir */public static void printJavaFile(File dir) {//1,获取到该文件夹路径下的所有的文件和文件夹,存储在File数组中File[] subFiles = dir.listFiles();//2,遍历数组,对每一个文件或文件夹做判断for (File subFile : subFiles) {//3,如果是文件,并且后缀是.java的,就打印if(subFile.isFile() && subFile.getName().endsWith(".java")) {System.out.println(subFile);//4,如果是文件夹,就递归调用}else if (subFile.isDirectory()){printJavaFile(subFile);}}}}
0 0
- 递归练习理解
- 递归练习
- 递归练习
- 递归 练习
- 递归练习
- 递归练习
- 递归练习
- 递归练习
- 递归练习
- 递归练习
- 递归练习
- 理解递归
- 理解递归!!
- 理解递归
- 理解 递归
- 递归理解
- 理解递归
- 理解递归
- PDO连接
- 程序员面试金典--面试28之改变几个位,才能将整数A转变成整数B。
- Win7系统下安装Ubuntu14.04超级详细图文教程
- 分页功能
- javamail验证失败Authentication failed的原因以及解决办法
- 递归练习理解
- java 上传附件到ftpServer 第二讲
- 招聘一个靠谱的 iOS 开发
- poj 1170 DP
- 【Oracle sql基础】子查询
- 使用devstack部署openstack及遇到问题
- CSS3阴影 box-shadow的使用和技巧总结
- Linux用户和用户组管理
- 面试中被问到的问题