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

本文介绍了递归算法的应用实例,包括直接递归计算阶乘、尾递归优化的阶乘计算,以及使用辅助递归实现的选择排序算法。通过具体的Java代码示例,帮助读者理解递归原理及其实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值