public class XxTest {
/**
* 用递归写2017的5次方
*/
static long f(long x, long n) {
if (n == 0) {
return 1;
} else if (n > 0) {
return x * f(x, n - 1);
} else{
return f(x, n + 1) / x;
}
}
/**
* 递归文件,找出含.java的文件
*/
public static void list(File dir){
File[ ] files=dir.listFiles();
if(files!=null&&files.length>0){
for(File file:files){
if(file.isDirectory()){ //若是子文件夹
list(file); //递归
}else{ //若是普通文件
if(file.getName().endsWith(".java")){
System.out.println(file.getPath());
}
}
}
}else{
System.out.println("该文件夹下不存在该类文件!!!");
}
}
/**
* 递归文件,找出含.java的文件
*/
public static void Sereach(File f)
{
if(f.isFile()) {
if(f.getName().endsWith(".java")) {
System.out.println(f.getPath());
}
}
if(f.isDirectory()) {
File []ss=f.listFiles();
for(int i=0;i<ss.length;i++){
Sereach(ss[i]);
}
}
}
/**
* 利用递归实现了Fibonacci数列
* Fibonacci数列:1,1,2,3,5,8,13……
* 题目:古典问题:3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
*/
private static int fab(int index) {
if (index == 1 || index == 2) {
return 1;
} else {
return fab(index - 1) + fab(index - 2);
}
}
/**
* 利用递归实现汉诺塔
*/
public static void move(int num, String from2, String mid2, String to2) {
if (num == 1) {
System.out.println("move disk 1 from " + from2 + " to " + to2);
} else {
move(num - 1, from2, to2, mid2);
System.out.println("move disk " + num + " from " + from2 + " to " + to2);
move(num - 1, mid2, from2, to2);
}
}
/**
* 利用递归实现,将输入的一个字符串中的所有元素进行排序并输出;low,high分别代表起始和结尾数
*/
public static void permute(char[] list, int low, int high) {
if (low == high) {//当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可
//String cout = "";
for (int i = 0; i <= high; i++) {
//cout += list[i];
System.out.print(list[i]);
}
//System.out.println(cout);
System.out.println();
} else { //多个字母全排列
for (int i = low; i <= high; i++) {
char temp = list[low]; //交换数组第一个元素与后续的元素
list[low] = list[i];
list[i] = temp;
permute(list, low + 1, high);//后续元素递归全排列
temp = list[low]; //将交换后的数组还原
list[low] = list[i];
list[i] = temp;
}
}
}
/**
* 利用递归实现,求1+2+3...+1000 和
*/
static long sum=0;
static int a=1;
public static void sum() {
sum+=a;
a++;
if(a<=1000)
{
sum();//调用自身实现递归
}
}
public static void main(String[] args) {
//System.out.println(f(2017, 5));
//list(new File("F:/eclipse/"));
//Sereach(new File("F:/eclipse/"));
/*for(int i=1;i<=20;i++){
System.out.println("兔子第"+i+"个月的总数为:"+fab(i));
}*/
//move(5,"sdf","aaa","ccc");
/*char list[]={'a','b','c'};
permute(list,0,list.length-1);*/
/*sum();
System.out.println("计算结果:"+XxTest.sum+"!");*/
}
}
/**
* 用递归写2017的5次方
*/
static long f(long x, long n) {
if (n == 0) {
return 1;
} else if (n > 0) {
return x * f(x, n - 1);
} else{
return f(x, n + 1) / x;
}
}
/**
* 递归文件,找出含.java的文件
*/
public static void list(File dir){
File[ ] files=dir.listFiles();
if(files!=null&&files.length>0){
for(File file:files){
if(file.isDirectory()){ //若是子文件夹
list(file); //递归
}else{ //若是普通文件
if(file.getName().endsWith(".java")){
System.out.println(file.getPath());
}
}
}
}else{
System.out.println("该文件夹下不存在该类文件!!!");
}
}
/**
* 递归文件,找出含.java的文件
*/
public static void Sereach(File f)
{
if(f.isFile()) {
if(f.getName().endsWith(".java")) {
System.out.println(f.getPath());
}
}
if(f.isDirectory()) {
File []ss=f.listFiles();
for(int i=0;i<ss.length;i++){
Sereach(ss[i]);
}
}
}
/**
* 利用递归实现了Fibonacci数列
* Fibonacci数列:1,1,2,3,5,8,13……
* 题目:古典问题:3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
*/
private static int fab(int index) {
if (index == 1 || index == 2) {
return 1;
} else {
return fab(index - 1) + fab(index - 2);
}
}
/**
* 利用递归实现汉诺塔
*/
public static void move(int num, String from2, String mid2, String to2) {
if (num == 1) {
System.out.println("move disk 1 from " + from2 + " to " + to2);
} else {
move(num - 1, from2, to2, mid2);
System.out.println("move disk " + num + " from " + from2 + " to " + to2);
move(num - 1, mid2, from2, to2);
}
}
/**
* 利用递归实现,将输入的一个字符串中的所有元素进行排序并输出;low,high分别代表起始和结尾数
*/
public static void permute(char[] list, int low, int high) {
if (low == high) {//当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可
//String cout = "";
for (int i = 0; i <= high; i++) {
//cout += list[i];
System.out.print(list[i]);
}
//System.out.println(cout);
System.out.println();
} else { //多个字母全排列
for (int i = low; i <= high; i++) {
char temp = list[low]; //交换数组第一个元素与后续的元素
list[low] = list[i];
list[i] = temp;
permute(list, low + 1, high);//后续元素递归全排列
temp = list[low]; //将交换后的数组还原
list[low] = list[i];
list[i] = temp;
}
}
}
/**
* 利用递归实现,求1+2+3...+1000 和
*/
static long sum=0;
static int a=1;
public static void sum() {
sum+=a;
a++;
if(a<=1000)
{
sum();//调用自身实现递归
}
}
public static void main(String[] args) {
//System.out.println(f(2017, 5));
//list(new File("F:/eclipse/"));
//Sereach(new File("F:/eclipse/"));
/*for(int i=1;i<=20;i++){
System.out.println("兔子第"+i+"个月的总数为:"+fab(i));
}*/
//move(5,"sdf","aaa","ccc");
/*char list[]={'a','b','c'};
permute(list,0,list.length-1);*/
/*sum();
System.out.println("计算结果:"+XxTest.sum+"!");*/
}
}