递归算法概念及案例

递归算法应该是我们开发中经常用到的一个算法,或者是进行解决某个题目时,需要用到的算法

JAVA递归算法

1.什么是递归算法

   递归算法就是直接或间接调用自己的算法。

案例

用递归函数和栈操作逆序栈

一个栈依次压入1,2,3,4,5那么从栈顶到栈底分别为5,4,3,2,1。将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现了栈中元素的逆序,请设计一个算法实现逆序栈的操作,但是只能用递归函数来实现,而不能用另外的数据结构。

给定一个栈Stack以及栈的大小top,请返回逆序后的栈。

public class ReverseStack {
    public int[] reverseStackRecursively(int[] stack, int top) {
        // write code here
        if(((stack.length+1)/2)>=top){return stack;}
        int flag=stack[top-1];
            stack[top-1]=stack[stack.length-top];
            stack[stack.length-top]=flag;
         return reverseStackRecursively( stack, top-1);
    }
}
递归算法实现快排

public static void quick(int[] arr,int low,int big) {
		int p=low;
		int q=big;
		//结束标识符
				if(low>big ) {
					return;
				}
		int index=arr[p];
		
		while(p<q) {
			while(index<arr[q] && q>=0)q--;
			if(p<q ) {
				arr[p++]=arr[q];
				
			}
			while(index>arr[p]&& p<q)p++;
			if(p<q)
				{
					arr[q--]=arr[p];
				
				}
			
		}
		arr[p]=index;
		quick(arr,low,p-1);
		quick(arr,p+1,big);
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值