Java中方法递归与File例题

1、有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?(不死神兔)
(1)数组方式

package 递归.作业;

public class TuziArray {
    public static void main(String[] args) {
         //定义数组
         int arr[] = new int[100];
         int m=20;
         arr[1] = 1;//前两个月兔子数量为1只
         arr[2] = 1;
         arr[3] = 2;
         for(int i=1;i<=m;i++){
            if(i>=3){
                //规律为:斐波那契数列规律
                arr[i] = arr[i-1] +arr[i-2];
             }
         }
         System.out.println("第20个月的兔子对数为:"+arr[20]);
     }
}

(2)递归方式

package 递归.作业;

public class Tuzi {
    public static void main(String[] args) {
        // 調用rabbit()方法
        int rabbit = rabbit(20);
        System.out.println("第20个月的兔子对数为: " + rabbit);
    }

    public static int rabbit(int mouth) {
        // 前兩個月只有一對兔子
        if (mouth == 1 || mouth == 2) {
            return 1;
        }
        // 上一个月的兔子数
        int rabbit1 = rabbit(mouth - 1);
        // 上一个月的前一个月兔子数
        int rabbit2 = rabbit(mouth - 2);
        // 斐波那契額函數
        return rabbit1 + rabbit2;
    }
}

2、需求:递归删除带内容的目录
假设项目路径下有一个demo文件夹里面又有一些文件夹和一些文件,请使用递归思路进行实现。

package 递归.作业;

import java.io.File;

public class FileDiGui2 {
    public static void main(String[] args) {
        // 封装File对象
        File demo = new File("demo");
        // 调用递归删除方法
        deleteFile(demo);
    }
    // 方法递归:删除
    public static void deleteFile(File demo) {
        // 获取该文件夹下的文件或文件夹路径名数组
        File[] demoFile = demo.listFiles();
        // 非空判断
        if (demoFile != null) {
             // 遍历demofile数组对象
             for (File file : demoFile) {
                   // 判断file里面的对象是不是标准文件,如果是则递归调用该方法进行继续判断
                   if (file.isFile()) {
                       deleteFile(file);
                   } else {// 否则是一个文件夹,执行输出文件名,并删除
                        System.out.println(file.getName() + "---" + file.delete());
                   }
              }
         }
    }
}

3、需求:请把E:\JavaSE目录下所有的java结尾的文件的绝对路径给输出在控制台。

package File类.作业;

import java.io.File;

public class OutputE {
    public static void main(String[] args) {
        // 创建文件对象  ,指向E:\\JavaSE
        File file = new File("E:\\JavaSE");
        // 获取file对象内的文件/文件夹路径名数组
        File[] files = file.listFiles();
        // 遍历files数组
        for (File f : files) {
            // 获取f对象文件名,判断是否以".java"结尾,如果是输出路径名
            if (f.getName().endsWith(".java"))
            System.out.println(f);
        }
   }
}

原文地址:http://blog.51cto.com/13678728/2117624

时间: 2024-11-29 06:19:36

Java中方法递归与File例题的相关文章

java中方法的定义

java中方法的定义: [修饰符]   [修饰符]   [返回值类型] 方法名字 [形参列表] //带[]的可以省略,返回值类型不能省略. 就拿main方法来说,public         static       void       main (String[] args){ 方法体: return 返回值://返回值要与返回值类型相匹配.没有返回值的话,返回值类型用void; } 方法的定义:为了完成某项功能,封装的一系列代码的集合: 方法的调用:同一个类中可以直接用方法名():调用:但

2018.3.31 java中的递归

java中的递归 1.概念 定义一个方法时,出现本方法调用本方法的过程,称之为递归 2.特点 必然有一个边界条件 使用递归代码往往更简洁,可读性强 3.什么时候使用递归 n的阶乘和n的累加定义 f(n) =1 f(n)=f(n)*f(n-1) 4.普通实现与递归实现的比较 普通实现 //计算5的阶乘 public class Demo { public static void main(String[] args) { int sum = 1; for (int i =5; i >=1; i--

java中方法调用

JAVA中方法的调用[基础] 一.调用本类中的方法 方法一.被调用方法声明为static ,可以在其他方法中直接调用.示例代码如下: public class HelloWord { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String str="HelloWord!"; int a=0; int b=a+1; int result=

java中方法的重载与重写的区别

JAVA中方法的重载与重写 1)  方法的的参数上看:重载后的方法与源方法在参数的类型以参数列表的顺序上会发生改变,而重写后的方法在参数的数据类型与参数列表的顺序不会发生改变 2)原方法是否对被覆盖:重载后的方法不会覆盖原方法,而重写后的方法会覆盖父类中的方法,调用时也只会调用重写后的方法. 3)调用方法的对象上:重载后的方法被调用时,调用对象不同时,调用的方法不同,产生的结果也不同:而重写后的方法被调用时,无论调用的对象是父类或者子类的对象,调用的方法相同,产生的结果也一样

Java基础---Java中方法的重裁(四十一)

Java 中方法的重载 问: 什么是方法的重载呢? 答: 如果同一个类中包含了两个或两个以上方法名相同.方法参数的个数.顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了.如下所示 4 个方法名称都为 show ,但方法的参数有所不同,因此都属于方法的重载: 问: 如何区分调用的是哪个重载方法呢? 答: 当调用被重载的方法时, Java 会根据参数的个数和类型来判断应该调用哪个重载方法,参数完全匹配的方法将被执行.如: 运行结果: 判断方法重载的依据: 1. 必须是在同一个类中 2.

深入理解Java中方法的参数传递机制

形参和实参 我们知道,在Java中定义方法时,是可以定义参数的,比如: public static void main(String[] args){ } 这里的args就是一个字符串数组类型的参数. 在程序设计语言中,参数有形式参数和实际参数之分,先来看下它们的定义: 形式参数:是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数,简称"形参". 实际参数:在主调函数中调用一个函数时,函数名后面括号中的参数称为"实际参数",简称"

黑马程序员-java中方法的知识点和递归调用

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 方法执行原理:(方法不调用不执行,调用才执行)  *   方法在调用的这时候,才会在内存中划分空间  *   方法在调用的时候,是在栈内存中分配的空间(jvm有一块内存是栈内存) * 函数/方法目的: 还是为了代码重用  * 相同的类型的

java中方法的知识点和递归调用

 方法执行原理:(方法不调用不执行,调用才执行) *   方法在调用的这时候,才会在内存中划分空间 *   方法在调用的时候,是在栈内存中分配的空间(jvm有一块内存是栈内存) * 函数/方法目的: 还是为了代码重用 * 相同的类型的操作,不容重复的写代码 * 函数/方法:就是一段有名字的代码段 * 方法的定义 *  [方法修饰符列表] 方法返回值类型 方法名(参数1,参数2,参数3....){ *          执行语句; *  } * *  方法修饰符列表是可选的:权限控制的:publi

JAVA中方法的定义与使用(课堂学习归纳)

组合数,百度词条是这样解释的:从m个不同元素中取出n(n≤m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元素的组合数(Combination) 对于计算组合数,需要一定的工作量,计算机可以很好的帮助我们机选组合数,下面总结3种Jav计算组合数的方法: 一: 源代码如下: package bky_1; import javax.swing.JOptionPane; public class zuheshu { public static int factorial(int x) { if