递归是解决问题的一种方法,它将问题不断地分成更小的子问题,直到子问题可以用普通的方法解决。通常情况下,递归会使用一个不停调用自己的函数来进行。
现存在一个数字列表(numlist),计算数字列表各数字之和。
第一种方法,通过循环实现:
def listsum(numlist):
nSum = 0
for i in numlist:
nSum = nSum + i
return nSum
第二种方法,通过递归实现: 递归的逻辑不是循环,而是将问题分解成更小、更容易解决的子问题。
def listsum(numlist):
if len(numlist) == 1:
return numlist[0]
else:
return numlist[0] + listsum(numlist[1:])
总结递归:一系列递归调用其实就是一系列的简化操作。每一次递归调用都是在解决一个更小的问题,如此进行下去,直到问题本身不能再简化为止。所以当问题无法再简化时,我们开始拼接所有子问题的答案,以此解决最初的问题。
联系客服