|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
下面代码利用递归实现将列表的各个元素进行相加,请补全红色方框中的代码,使其能够成功执行并获取结果。
>>> def recsum(x):
... if not x:
... return 0
... else:
... #补充这里的代码
recsum([1,2,3,4,5])
15
答案:
>>> def recsum(x):
... if not x:
... return 0
... else:
... return x[0] + recsum(x[1:])
大佬们,请问答案里的 return x[0] + recsum(x[1:]) 到底是怎么计算的,过程可以展开下么 看了半天看不懂
本帖最后由 lxping 于 2022-12-8 19:56 编辑
x[0] + recsum(x[1:]) = x[0] + x[1:][0] + recsum(x[1:][1:0]) 一直这样迭代下去,直到传入 recsum(x)的参数问空的时候,执行 if not x: return 0,结束迭代
其实就是利用切片将列表x中的元素一个一个提取出来,然后相加
x[0] + recsum(x[1:]) = 1 + recsum( [2,3,4,5] ) = 1 + 2 + recsum( [3,4,5] ) = 1 + 2 + 3 + recsum( [4,5] ) = 1 + 2 + 3 + 4 + recsum( [5] ) = 1 + 2 + 3 + 4 + 5 + recsum( [] )
- x = [1,2,3,4,5]
- x[1:] = [2,3,4,5]
- x[1:][1:] = [3,4,5]
复制代码
|
|