我是靠谱客的博主 美满皮皮虾,最近开发中收集的这篇文章主要介绍Java递归练习题1,从键盘接收一个文件夹路径,统计该文件夹大小2,从键盘接收一个文件夹路径,删除该文件夹3,从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中4,从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印5,假设一对刚出生的小兔一个月后就能长成大兔,再过一个月就能生下一对小兔,并且此后每个月都生一对小兔,一年内没有发生死亡, 问:一对刚出生的兔子,一年内繁殖成多少对兔子? 规律:1 1 2 3 5 8 13 216,约瑟夫环N个人围成一圈,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
1,从键盘接收一个文件夹路径,统计该文件夹大小
package demo;
import java.io.File;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
File file = getDirectory();
System.out.println(fileSize(file));
}
// 判断是否是文件夹
public static File getDirectory() {
Scanner sc = new Scanner(System.in);
System.out.print("请输入文件路径:");
while (true) {
String path = sc.next();
File file = new File(path);
if (!file.exists()) {
System.out.print("文件不存在,请重新输入:");
} else if (file.isFile()) {
System.out.print("您输入的是文件路径,请重新输入:");
} else {
return file;
}
}
}
// 使用递归判断文件夹大小
public static int fileSize(File file) {
int size = 0;
File[] files = file.listFiles();
for (File file1 : files) {
if (file1.isFile()) {
size += file1.length();
} else {
size += fileSize(file1);
}
}
return size;
}
}
2,从键盘接收一个文件夹路径,删除该文件夹
package demo;
import java.io.File;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
File file = getDirectory();
deleteDirectory(file);
if (file.exists()) {
System.out.println("删除失败");
} else {
System.out.println("删除成功");
}
}
// 判断是否是文件夹
public static File getDirectory() {
Scanner sc = new Scanner(System.in);
System.out.print("请输入文件路径:");
while (true) {
String path = sc.next();
File file = new File(path);
if (!file.exists()) {
System.out.print("文件不存在,请重新输入:");
} else if (file.isFile()) {
System.out.print("您输入的是文件路径,请重新输入:");
} else {
return file;
}
}
}
// 使用递归删除文件夹
public static void deleteDirectory(File file) {
File[] files = file.listFiles();
for (File file1 : files) {
if (file1.isFile()) {
file1.delete();
} else {
deleteDirectory(file1);
}
}
// 当文件夹里没有文件时,删除文件
file.delete();
}
}
3,从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
package demo;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) throws IOException {
File src = getDirectory();
File dest = getDirectory();
if (src.equals(dest)) {
System.out.println("目标文件夹是原文件夹的子文件夹");
} else {
copyFile(src, dest);
}
}
// 判断是否是文件夹
public static File getDirectory() {
Scanner sc = new Scanner(System.in);
System.out.print("请输入文件路径:");
while (true) {
String path = sc.next();
File file = new File(path);
if (!file.exists()) {
System.out.print("文件不存在,请重新输入:");
} else if (file.isFile()) {
System.out.print("您输入的是文件路径,请重新输入:");
} else {
return file;
}
}
}
// 使用递归拷贝文件夹
public static void copyFile(File src, File dest) throws IOException {
// 先要在目的文件夹里创建原文件夹
File newFile = new File(dest, src.getName());
newFile.mkdir();
// 遍历原文件里的文件和文件夹
File[] files = src.listFiles();
for (File file1 : files) {
if (file1.isFile()) {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file1));
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(new File(newFile, file1.getName())));
int b;
while ((b = bis.read()) != -1) {
bos.write(b);
}
bis.close();
bos.close();
} else {
copyFile(file1, newFile);
}
}
}
}
4,从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印
package demo;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class Test4 {
public static void main(String[] args) throws IOException {
File file = getDirectory();
tierPrint(file, 0);
}
// 判断是否是文件夹
public static File getDirectory() {
Scanner sc = new Scanner(System.in);
System.out.print("请输入文件路径:");
while (true) {
String path = sc.next();
File file = new File(path);
if (!file.exists()) {
System.out.print("文件不存在,请重新输入:");
} else if (file.isFile()) {
System.out.print("您输入的是文件路径,请重新输入:");
} else {
return file;
}
}
}
// 使用递归按层级打印
public static void tierPrint(File file, int lev) throws IOException {
File[] files = file.listFiles();
for (File file1 : files) {
for (int i = 0; i < lev; i++) {
System.out.print("t");
}
System.out.println(file1.getPath());
if (file1.isDirectory()) {
tierPrint(file1, lev + 1);
}
}
}
}
5,假设一对刚出生的小兔一个月后就能长成大兔,再过一个月就能生下一对小兔,并且此后每个月都生一对小兔,一年内没有发生死亡,
问:一对刚出生的兔子,一年内繁殖成多少对兔子?
规律:1 1 2 3 5 8 13 21
package demo;
import java.util.Scanner;
public class Test5 {
public static void main(String[] args) {
// 规律: 1 1 2 3 5 8 13 21
Scanner sc = new Scanner(System.in);
System.out.print("请输入天数:");
int day = sc.nextInt();
System.out.println(recursion(day));
// System.out.println(array(day));
}
// 使用递归进行计算
public static int recursion(int day) {
if (day == 1 || day == 2) {
return 1;
} else {
return recursion(day - 2) + recursion(day - 1);
}
}
// 按数组方式计算
public static int array(int day) {
int[] is = new int[day];
is[0] = 1;
is[1] = 1;
for (int i = 2; i < is.length; i++) {
is[i] = is[i - 2] + is[i - 1];
}
return is[is.length - 1];
}
}
6,约瑟夫环
N个人围成一圈,从第一个开始报数,每第三个人将被杀掉,最后剩下一个,其余人都将被杀掉。
package demo;
import java.util.ArrayList;
public class Test6 {
public static void main(String[] args) {
System.out.println(getLucklyNum(8));// 7
}
public static int getLucklyNum(int num) {
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 1; i <= num; i++) {
list.add(i);
}
// 计数
int count = 1;
for (int i = 0; list.size() != 1; i++) {
// 如果下标超过了最大下标,相当于又从一个人接着往下叫数
if (i == list.size()) {
i = 0;
}
// 每三个人就删除一个
if (count % 3 == 0) {
list.remove(i);
i--;
}
count++;
}
// 最后剩下的一个人返回
return list.get(0);
}
}
最后
以上就是美满皮皮虾为你收集整理的Java递归练习题1,从键盘接收一个文件夹路径,统计该文件夹大小2,从键盘接收一个文件夹路径,删除该文件夹3,从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中4,从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印5,假设一对刚出生的小兔一个月后就能长成大兔,再过一个月就能生下一对小兔,并且此后每个月都生一对小兔,一年内没有发生死亡, 问:一对刚出生的兔子,一年内繁殖成多少对兔子? 规律:1 1 2 3 5 8 13 216,约瑟夫环N个人围成一圈的全部内容,希望文章能够帮你解决Java递归练习题1,从键盘接收一个文件夹路径,统计该文件夹大小2,从键盘接收一个文件夹路径,删除该文件夹3,从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中4,从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印5,假设一对刚出生的小兔一个月后就能长成大兔,再过一个月就能生下一对小兔,并且此后每个月都生一对小兔,一年内没有发生死亡, 问:一对刚出生的兔子,一年内繁殖成多少对兔子? 规律:1 1 2 3 5 8 13 216,约瑟夫环N个人围成一圈所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复