python使用递归方法计算一个list中的最大值和最小值

def MaxMin(L):
	if not isinstance(L,list):
		print('L是一个list')
		return None
	if len(L)<=0:
		print('L不能是空列表')
		return None
	return list(L,0,len(L)-1)
def list(L, start, end):     ##假设一个边界L 给两个参数 start和end
    if end-start <=2:		##假设 
        return (max(L[start], L[end]), min(L[start], L[end]))  ##分别获取到分界线两边的最大值和最小值
    max1, min1 = list(L, start, (start+end)//2)     ##查询分界线前面的最大值最小值
    max2, min2 = list(L, (start+end)//2+1, end)		##查询分界线后面的最大值最小值
    return (max(max1, max2), min(min1, min2))		##返回最大值和最小值

if __name__ == '__main__':
	L = [1,11,-10,13,7,9]
	max,min = MaxMin(L)
	print(max,min)

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用分治方法在n个元素同时寻找最大值最小值的思路如下: 1. 首先将n个元素划分为两个子问题,分别为左子问题和右子问题。 2. 对左子问题和右子问题分别使用同样的分治方法递归地寻找最大值最小值递归结束条件为子问题只有一个元素时直接返回。 3. 比较左子问题最大值最小值,以及右子问题最大值最小值,得到整个问题最大值最小值。 4. 返回整个问题最大值最小值。 具体的实现步骤如下: 1. 如果n = 1,则直接返回该元素作为最大值最小值。 2. 如果n = 2,则比较两个元素的大小,较大的作为最大值,较小的作为最小值,然后返回。 3. 如果n > 2,则将n个元素分成两个子问题,分别处理前n/2个元素和后n/2个元素。 4. 对于前n/2个元素使用递归调用分治方法解其最大值最小值。 5. 对于后n/2个元素使用递归调用分治方法解其最大值最小值。 6. 比较两个子问题最大值最小值,得到整个问题最大值最小值,然后返回。 通过使用分治方法,可以将问题分解为更小的子问题,并且利用子问题之间的关系来得到整个问题的解。这样可以减少问题的规模,提高问题的解决效率。同时,通过使用递归调用,可以将问题逐步分解,直到达到简单问题的解决方法,从而得到整个问题的解。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值