Java语言程序设计-进阶篇(一)递归

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);}
  }
  
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值