1.N个台阶的走法递归【这里设为10个台阶】
/*** N个台阶的走法递归
*
* 有个楼梯,台阶有10个,每次可以跳上1阶 或者 2阶 ,那么台阶的走法一共有多少种*/@Testpublic voidt() {
System.out.println(f(10));
}//斐波那契数列变形,求N个台阶的走法,递归方法
public int f(intn) {if (n <= 2) {returnn;
}return f(n - 1) + f(n - 2);
}
View Code
2.文件删除递归
/*** 文件删除递归
*
* 1:检测文件夹是否存在,不存在则退出
* 2:获取该文件夹目录【获取文件数组】,遍历文件数组
* 3:判断是文件则删除,不是则回调 2
* 4.文件删除完后,将该文件夹删除*/@Testpublic voidt2() {this.delete(file);
}//封装根目录
static File file = new File("C:/Users/cen/Desktop/ww");public voiddelete(File f) {if (!f.exists()) {
System.out.println("该文件夹不存在");return;
}//获取该文件夹的目录文件数组
File[] files =f.listFiles();//遍历
for(File mf : files) {//如果是文件夹
if(mf.isDirectory()) {//递归
delete(mf);
}//如果是文件
else if(mf.isFile()) {//删除文件,方法.delete() 删除成功返回true ,失败为false
System.out.println("文件" + mf.getName() + "被删除:" +mf.delete());
}
}
System.out.println("最后操作完毕,已经是个空文件夹=" + f.getName() + "=啦,现在删除该空文件夹:" +f.delete());
}
View Code
3.文件查询递归
/*** 文件查询递归
*
* 1:检测文件夹是否存在,不存在则退出
* 2:获取该文件夹目录【获取文件数组】,遍历文件数组
* 3:判断是文件夹则回调 2 ,如果是是文件且文件名后缀是 .java 则打印绝对路径*/@Testpublic voidt3() {this.find(file2);
}//封装根目录
static File file2 = new File("C:/Users/cen/Desktop/ww");public voidfind(File f) {if (!f.exists()) {
System.out.println("该文件夹不存在");return;
}//获取该文件夹的目录文件数组
File[] files =f.listFiles();//遍历
if (files != null) {for(File mf : files) {//如果是文件夹
if(mf.isDirectory()) {//递归
find(mf);
}//如果是文件 且文件名后缀是 .java 则打印觉得路径
else if (mf.isFile() && mf.getName().endsWith(".java")) {//删除文件,方法.delete() 删除成功返回true ,失败为false
System.out.println("文件" + mf.getName() + "绝对路径:" +mf.getAbsolutePath());
}
}
}
}
View Code
4.使用递归方式计算 随机数 [1,10]的乘阶结果并打印过程
/*** 使用递归方式计算 随机数 [1,10]的乘阶结果并打印过程*/@Testpublic voidt4() {//(数据类型)(最小值+Math.random()*(最大值-最小值+1))
int i = (int) (1 + Math.random() * (10 - 1 + 1));
System.out.println(i+ "的乘阶是:" + this.mo(i));
StringBuilder s= newStringBuilder();for (intn : list) {
s.append(n).append("*");
}int len =s.length();//去掉末尾的 *号//substrings是要包含末尾索引的字符的
String str = s.substring(0, len - 1);
System.out.println("乘阶过程是" +str);
}//记录数字
List list = new ArrayList<>();public int mo(intn) {//记录数字
list.add(n);if (n < 2) {//n为1
returnn;
}//递归
return n * mo(n - 1);
}
View Code
5.有一对兔子,从出生后第三个月起每个月都生一对兔子 ,小兔子长到第三个月后每
个月又生一对兔子,假如兔子都不死 ,问每个月的兔子总数为多少?
/*** 题目:有一对兔子,从出生后第三个月起每个月都生一对兔子 ,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死 ,问每个月的兔子总数为多少?
*
* 解析:使用斐波拉契数列计算 : 每一项都是前两项之和,一般使用递归方法计算
*
* 兔子数列应该是 1,1,2,3,5,8,13,21,34 【注意:这里的单位是对 ,那么兔子数需要 * 2】*/@Test//public void t5() {
public static voidmain(String[] args) {//获取月份数
int n =getMonth();
System.out.println("当前输入月份是:" +n);//兔子对数
int xx =tutu(n);
System.out.println("当前兔子对数是:" +xx);
System.out.println("当前共有" + 2 * xx + "只兔子");
}//获取键盘数字递归
public static intgetMonth() {
System.out.println("请输入月份【正整数】:");//从键盘接收数据
Scanner scanner = newScanner(System.in);//判断是否有输入值
if(scanner.hasNext()) {//接收数值
String m =scanner.next();try{//字符串转整数//Integer x = Integer.valueOf(m);
int x =Integer.parseInt(m);if (x > 0) {returnx;
}returngetMonth();
}catch(Exception e) {returngetMonth();
}
}returngetMonth();
}//斐波拉契数列递归
public static int tutu(intn) {//前两个月不生兔子,还是一对
if (n < 3) {return 1;
}else{return tutu(n - 1) + tutu(n - 2);
}
}
View Code
6.判断101-200之间有多少个素数,并输出所有素数