算法题型归纳

本文详细介绍了查找与排序中的递归方法,包括阶乘、翻转字符串、斐波那契数列等递归实例。同时,深入探讨了分治法,解析了快速排序的思想及算法实现,强调了分治法的关键点,帮助读者理解如何高效地运用递归和分治策略解决问题。
摘要由CSDN通过智能技术生成

查找与排序

递归

一、阶乘

public static int f(int i) {
   
		if ( i == 1 )
			return 1;
		return i*f(i-1);
	}
	
	public static void main(String[] args) {
   
		 int num = 3;
		 int res = f(num);
		 System.out.println(res);
	}

二、打印从 i 到 j

public static void f(int i, int j) {
   
		if ( i > j) {
   
			return;
		}
		System.out.println(i);
		f(i+1,j);
	}
	
	public static void main(String[] args) {
   
		 int i = 1;
		 int j = 5;
		 f(i,j);
	}

三、数组求和

一共有两种解法,都是用递归,但一种是正序递归,一种是倒序递归

//思路是:从小到大递归(正序)
	public static int  f(int arr[],int begin) {
   
		if( arr.length-1 == begin )
			return arr[begin];
		return arr[begin]+f(arr,begin+1);
	}
	
	public static void main(String[] args) {
   
		int [] list = {
   1,2,3,4,5};//3
		int res = f(list,0);
		System.out.println(res);
	}
//思路是:从大到小递归(倒序)
	public static int f(int [] arr,int end) {
   //end==4
		if ( end == 0)
			return arr[0];
		return arr[end]+f(arr,end-1);
	}
	
	public static void main(String[] args) {
   
		 int [] list = {
   1,2,3,4,5};//5
		 int res = f(list,list.length-1);
		 System.out.println(res);
	}

四、翻转字符串

一共有两种解法,都是递归,一个是正序递归,一个是逆序递归,思路与上道题(数组求和)相似,只演示逆序递归

//逆序递归
	public static String f(String str2,int len) {
   //len==3
		if ( len == 0 )
			return str2.charAt(len)+"";
		return str2.charAt(len)+f(str2,len-1);
	}
	
	public static void main(String[] args) {
   
		String str1 = "abcd";//4
		String res = f(str1,str1.length()-1);
		System.out.println(res);
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值