您的位置:首页 > 其它

递归问题求解学习一

2009-04-22 14:12 555 查看
http://blog.csdn.net/lixiaoshan_18899/archive/2006/09/15/1227122.aspx

http://www.zxbc.cn/html/20070920/27182.html

/article/4598856.html

/article/5438439.html

递归实现1

/**
* 递归实现N的阶乘
* @param n
* @return return the value of n!
*/
public static int fun(int n){
int intRe = 0;
if(n==0 || n==1){
intRe = 1;
}
if(n>1){
intRe = n * fun(n-1);
}
return intRe;
}

/**
* 非递归实现N的阶乘
* @param n
* @return
*/
public static int fun2(int n){
int intRe = 1;
if(n==0 || n==1){
intRe = 1;
}
if(n>1){
for(int i=n;i>1;i--){
intRe = intRe * i;
}
}
return intRe;
}


递归实现2

/**
* 递归实现汉诺塔问题
* @param num num is the disk number
* @param from src A
* @param mid middle B
* @param to dis C
*/
public static void move(int num,String from,String mid,String to){
if(num==1){
System.out.println("move disk from " + from + " to " + to);
}else{
move(num-1,from,to,mid);
System.out.println("move disk from "+ from + " to " + to);
move(num-1,mid,from,to);

}
}


递归实现3

/**
* 非递归实现数组的逆序
* reverseArray Non-recursive method
* @param array
* @return
*/
public static String[] reverseArray(String[] array){
int length = array.length;
String [] strArray = new String[length];
int i=0;
for( ;i<length-1;){
for(int j=length-1;j>=0;j--){
strArray[i] = array[j];
i++;
}

}
return strArray;

}

/**
* 递归实现数组的逆序
* @param array
* @param row
* @param high
*/
public static void reverseArray2(String[] array ,int row,int high){
String temp = array[row];
array[row] = array[high];
array[high] = temp;
row ++;
high--;

int len = array.length;
int m = (len-1)%2;

if(m==0 && row!=high){
reverseArray2(array, row, high);
}
if(m!=0 && high>=row+1){
reverseArray2(array, row, high);
}
}

/**
* 递归实现数组的逆序
* @param array
* @param row
* @param high
*/
public static void reverseArray3(String[] array ,int row,int high){
String temp = array[row];
array[row] = array[high];
array[high] = temp;
if(row>=high)
return;
else{
reverseArray2(array, row+1, high-1);
}

}


递归实现数组逆序类

public class RecursiveArray {

private String[] array = null;

public RecursiveArray(String[] array){
this.array = array;
}

public void resevert(int i,int j){
String temp = array[i];
array[i] = array[j];
array[j] = temp;
if(i>=j)
return;
else{
resevert(i+1,j-1);
}

}
/**
* @param args
*/
public static void main(String[] args) {
String arr[] = {"23","44","55","66","77"};
int len = arr.length;
RecursiveArray recur = new RecursiveArray(arr);
recur.printArr();
recur.resevert(0, len-1);
recur.printArr();
}
private void printArr() {
if(array != null){
for(int i=0;i<array.length;i++){
System.out.println(array[i]);
}
System.out.println("-----------------");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: