如果列表为空返回 0;

如果列表不为空比较mylist[0] > getMaxValue(mylist[1:]);

如果mylist[0]大则返回;

否则再次递归;

1. 基本代码实现

# 处理用列表
mylist = [12, 5, 23, 100, 25, 36, 78, 25, 100, 13]


# 求最大值函数
def getMaxValue(mylist):
    # 结束条件
    if mylist == None:
        return 0
    elif len(mylist) == 1:
        return mylist[0]

    # 返回大值
    elif mylist[0] > getMaxValue(mylist[1:]):
        return mylist[0]
    else:
        return getMaxValue(mylist[1:])


print(getMaxValue(mylist))

'''
递归调用流程
[12, 5, 23]
--> 12, 5, 23
    --> 5, 23
        --> 23
    --> 5, 23    5 和 23比较 --> getMaxValue(mylist[1:]),第二层递归
        --> 23
    --> 12, 5, 23   12 和 23比较
--> 23                   
'''

2. 使用Math.max函数实现

# 处理用列表
mylist = [12, 5, 23, 100, 25, 36, 78, 25, 100, 13,200,30]

# 求最大值函数
def getMaxValue(mylist):
    # 结束条件
    if len(mylist) == 0:
        return 0
    return max(mylist[0] , getMaxValue(mylist[1:]))

print(getMaxValue(mylist))

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐