1.直接递归,计算N的阶乘
package practice;
public class myfactorial{
public static void main(String args[]){
System.out.println("5的阶乘是: " + factorial(5));
System.out.println("5的阶乘是: " + factorial(10));
System.out.println("5的阶乘是: " + factorial(15));
}
public static int factorial(int n){
if(n==0)
return 1;
else
return n*factorial(n-1);
}
}
2.辅助递归,对数组进行选择排列。
package practice;
public class RecursiveSort{
public static void main(String args[]){
int[] list = new int[]{11,1,23,421,42,12,3,4,5,2};
for(int i:list){
System.out.print(i+" ");}
System.out.println();
mysort(list);
for(int i:list){
System.out.print(i+" ");}
}
public static void mysort(int list[]){
mysort(list,0,list.length);
}
public static void mysort(int mylist[],int low,int high){
if(low<high){
int temp = mylist[low];
int minindex = low;
for(int i=low+1;i<mylist.length;i++){
if(temp>mylist[i]){
temp = mylist[i];
minindex = i;}
}
mylist[minindex] = mylist[low];
mylist[low] = temp;
mysort(mylist,low+1,high);}
}
}
3.尾递归是指递归函数在结尾,之后没有任何语句,这样的递归效率更高。
package practice;
public class TailFactorial{
public static void main(String args[]){
System.out.println(factorial(5));
}
public static int factorial(int n){
int result = 1;
return factorial(n,result);
}
public static int factorial(int n,int result){
if(n==0)
return result;
else
{result *= n;
return factorial(n-1,result);}
}
}