递归时间复杂度的计算

递归

时间复杂度计算

在这里插入图片描述

用递归的方式找数组中的最大值

递归的本质是系统帮你压栈,第一次走到第十行时,开始自己调用自己,把第十行的信息压入栈中,包括行号10,L=0,mid=1,然后从头开始,走到第十行时把信息压栈,行号10,L=0,mid=0,从头开始,L==R,把arr[0]的值传给leftMax

package basic_class_01;
//用递归的方式找数组的最大值
public class RecursionArray {
 public static int getmax(int[] arr,int L,int R){
  if(L == R)
  {
   return arr[L];
  }
  int mid = (L+R)/2;
  int leftMax = getmax(arr,L,mid);
  int rightMax = getmax(arr,mid+1,R);
  return Math.max(leftMax, rightMax);
 }
 public static void main(String args[]){
  int arr[] = {4,3,2,1};
  System.out.print(getmax(arr,0,arr.length-1));
 }
}

时间复杂度a=2,b=2,d=0,所以时间复杂度为O(n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值