'''
练习 :计算列表长度
问题描述:
不使用 Python 内置的 len() 函数,用递归计算一个列表里有多少个元素。
'''
'''
1.问题: 用递归计算 '一个列表' 里有多少个元素。
1.1 明确问题: 列表的定义, 多个少个元素的准确定义. 目的:拆分列表,寻找递归关系,利用计数器,计数器结果=列表元素数量
1.2 元素属性,及目的分析
1.2.1 传入参数就是列表,
列表
属性:1.列表的下标,已知存在0和1. ()
2.切片:返回值-列表,列表的多组数据
1.2.2 寻找递归关系 (不使用下标的情况)
传入参数 list = [未知数量]
设:n = 列表元素数量
n = 1, 计数器1=1 + 切片[1:]
n = 2, 计数器2=1 + 结果(计数器1结果)
n = 3, 计数器3=1 + 结果(计数器2结果)
n = n, 计数器n=1 + 结果(计数器n-1结果)
例外: 列表为空/输入参数不是列表/
2.设计递归函数
2.1 明确函数做什么
传入参数 :一个列表
存在递归关系,调用自身
加法运算,返回值,
如何收敛: 自身函数(切片[1:]) , (相当于'调用自身时参数在缩小',直到基准情形的条件)
2.2 基准情形
列表为1时, 返回计数器数值 1
2.3 寻找递归关系
传入参数 list = [未知数量]
设:n = 列表元素数量
n = 1, 计数器1=1 + 切片[1:]
n = 2, 计数器2=1 + 结果(计数器1结果)
n = 3, 计数器3=1 + 结果(计数器2结果)
n = n, 计数器n=1 + 结果(计数器n-1结果)
例外: 列表为空/输入参数不是列表/
2.4 验证收敛性 = 调用自身时,传入的参数在缩小.
函数(切片[1:])
'''
def l1(a):
"""
递归计算一个列表的长度
:param a: list
:return: 整数,代表列表的元素个数
"""
if a[1:] == [] and a != []:
return 1
elif a[1:] != [] and type(a) == list:
return 1+l1(a[1:])
elif type(a) != list :
print('参数为列表类型')
elif a == []:
return 0
# 验证递归正确
a = [1,'1','2','3','4',5,6]
b = 1
c = []
print(l1(a))
![PixPin_2026-02-03-练习3]()