'''用递归编写一个sum函数''' '''递归算法: 第一步:找出基线条件-->当列表为空时,return 0 第二步:思考如何缩小问题的规模--使列表变短逐渐为空,使其符合基线条件 每次递归都要离空列表更近一步 ''' def sumList(mylist): if len(mylist) == 0: return 0 else: return mylist[0] + sum(mylist[1:]) mylist=[1,2,3] print(sumList(mylist)) ''' 基线条件:list为空时return 0 递归条件:sum = head list + sum (tail list) mylist[1,2,3] 1+sum(mylist[2,3])--->此时列表仍然不为空,继续调用递归函数 1+2+sum(mylist[3])--->不为空,继续调用 1+2+3+sum(mylist[])--->为空,则逐层返回 [1,2,3] --> 1,2,3 输入列表[1,2,3]不为空 --> 2,3 取列表的第一个元素,还剩下两个继续递归 --> 3 3 接着取剩余列表的的第一个数2出去,还剩3一个 --> 2,3 2 + 3 = 5 返回上一个list[0] 即2 --> 1,2,3 1 + 5 = 6 接着再返回上一个list[0],即1 '''
#如果编写涉及数组的递归函数,基线条件通常是数组为空或者数组只包含一个元素,当使用递归不对劲时,先检查基线条件是否设置正确