递归方式计算阶乘
package com.fairy.io;
public class Recursion {
// 循环方式计算阶乘,又叫做迭代方式
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) {
Recursion test = new Recursion();
System.out.println(test.compute(5));
System.out.println(test.compute2(5));
}
}
递归方式计算斐波那契数列
package com.fairy.io;
public class Fibonacci {
// 使用递归计算斐波那契数列
public int compute(int n) {
if (1 == n || 2 == n) {
return 1;
} else {
return compute(n - 1) + compute(n - 2);
}
}
public static void main(String[] args) {
Fibonacci fibonacci = new Fibonacci();
System.out.println(fibonacci.compute(1));
System.out.println(fibonacci.compute(2));
System.out.println(fibonacci.compute(3));
System.out.println(fibonacci.compute(4));
System.out.println(fibonacci.compute(5));
System.out.println(fibonacci.compute(6));
}
}
删除一个文件目录下的所有文件,采用递归实现
package com.fairy.io;
import java.io.File;
public class FileTest7 {
public static void deleteAll(File file) {
if (file.isFile() || file.list().length == 0) {
file.delete();
} else {
File[] files = file.listFiles();
for (File f : files) {
deleteAll(f);
f.delete();
}
}
}
public static void main(String[] args) {
deleteAll(new File("C:/abc"));
}
}
罗列出一个文件目录下的所有文件,采用递归实现。
Version1:
package com.fairy.io;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class FileTest8 {
// 用于判断目录或文件所处的层次
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) {
StringBuilder output = new StringBuilder();
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--;
}
}
}
}
// 整理文件数组,使得目录排在文件之前
private static File[] sort(File[] files) {
List<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) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < time; i++) {
sb.append("\t");
}
return sb.toString();
}
public static void main(String[] args) {
File file = new File("D:/Util");
deepList(file);
}
}
Version2:
import java.io.File;
public class ListFileDemo {
public static void main(String[] args) {
File file = new File("C:/Documents and Settings/root/桌面");
list(file);
}
public static void list(File file) {
if (file.isDirectory()) {
File[] files = file.listFiles();
if (files != null) {
for (File f : files) {
list(f);
}
}
}
System.out.println(file);
}
}