递归练习答案

<算法图解>4.1/4.2/4.3
# 请编写前述sum函数的代码:

def sum(list):
    if list == []:
        return 0
    return list[0] + sum(list[1:])

print(sum([4, 5, 6, 7]))

# 编写一个递归函数来计算列表包含的元素数

def count(list):
    if list == []:
        return 0
    return 1 + count(list[1:])

print(count([4, 5, 6, 7]))

# 找出列表中最大的数字

def max(list):
    if len(list) == 0:
        return None
    if len(list) == 1:
        return list[0]
    if len(list) == 2:
        return list[0] if list[0] > list[1] else list[1]
    sub_max = max(list[1:])
    return list[0] if list[0] > sub_max else sub_max

print(max([4, 5, 6, 7]))
print(max([]))
print(max([1]))
# 如果没有len(list)为0或者1的保护代码,如上会报错 
# RecursionError: maximum recursion depth exceeded in comparison

def max2(list):
    if len(list) == 0:
        return None
    if len(list) == 1:
        return list[0]
    if len(list) == 2:
        if list[0] > list[1]:
            return list[0]
        return list[1]

    sub_max = max(list[1:])
    if list[0] > sub_max:
        return list[0]
    return sub_max

print(max2([3, 4, 5, 6]))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值