分享一道有趣的递归题

这是博主在今日计算机考试上遇到的一道递归题,由于前面做得太慢,只剩下了15分钟,绞尽脑汁才把这道题的主体部分给写了出来。
题目是这样的:给出一个列表,里面全是integer,比如 [8,4,4,8,12,3,2,9],或者[2,1,14,6,4,3] ;我们要做的呢,是把找出这个列表最大的corner和。什么是corner和呢,就是指列表开头或者结尾的K个元素之和,可以是一些在头一些在尾,也可以全部在开头,全部在结尾。反正这K个元素一定是挨在开头或者结尾的。
比如[8,4,4,8,12,3,2,9],3个元素corner和最大值是21,即8+4+9
又比如[2,1,14,6,4,3],3个元素corner和最大值是17,即2+1+14

下面提供我写的代码

def max_sum(arr, K):
    if K==0:
        return 0
    else:
        list0=[]  
        list0.append(max_sum(arr[:-1],K-1)+arr[-1])
        list0.append(max_sum(arr[1:],K-1)+arr[0])
    
    
    return max(list0)
    


# you can use the following as test cases 
arr = [8, 4, 4, 8, 12, 3, 2, 9]
print(max_sum(arr, K=3))

arr = [2, 1, 14, 6, 4, 3]
print(max_sum(arr, K=3))

欢迎大家建议指正。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值