418323317 发表于 2022-12-8 19:25:10

第49讲:函数(IX)

下面代码利用递归实现将列表的各个元素进行相加,请补全红色方框中的代码,使其能够成功执行并获取结果。
>>> def recsum(x):
...   if not x:
...         return 0
...   else:
...      #补充这里的代码
        recsum()
        15


答案:
>>> def recsum(x):
...   if not x:
...         return 0
...   else:
...         return x + recsum(x)

大佬们,请问答案里的return x + recsum(x)到底是怎么计算的,过程可以展开下么{:10_266:}看了半天看不懂

lxping 发表于 2022-12-8 19:50:42

本帖最后由 lxping 于 2022-12-8 19:56 编辑

x + recsum(x)=x + x + recsum(x) 一直这样迭代下去,直到传入 recsum(x)的参数问空的时候,执行 if not x: return 0,结束迭代
其实就是利用切片将列表x中的元素一个一个提取出来,然后相加
x + recsum(x) = 1 +recsum( ) = 1 + 2 + recsum( ) = 1 + 2 + 3 + recsum( ) = 1 + 2 + 3 + 4 + recsum( ) = 1 + 2 + 3 + 4 + 5 + recsum( [] )
x =
x =       
x =    

418323317 发表于 2022-12-8 20:39:21

lxping 发表于 2022-12-8 19:50
x + recsum(x)=x + x + recsum(x) 一直这样迭代下去,直到传入 recsum(x)的 ...

{:10_254:}三克油

yikou一个人类 发表于 2022-12-8 22:17:32

333
页: [1]
查看完整版本: 第49讲:函数(IX)