python算法问题-递归(1)

什么是递归

递归是一种解决问题的方法,将问题分解为更小的子问题,直到得到一个足够小的问题可以被很简单的解决。通常递归涉及函数调用自身。递归允许我们编写优雅的解决方案,解决可能很难编程的问题。


来看一个最简单的例子,求和。一个列表求和的话,常见写法是这样的:

def listsum(numlist):
    thesum = 0
    for i in numlist:
        thesum = thesum + i
    return thesum
l = [1,3,5,7,9,]
print listsum(l)

这个写法其实就很简单了,就是个thesum作为累加器不断做加法的写法,来看看叠加是怎么样的。

def listsum1(numlist):
    if len(numlist) == 1:
        return numlist[0]
    else:
        return numlist[0] + listsum(numlist[1:])
    
print listsum1(l)

我的理解就是本来是一个列表相加,将列表相加分解为两两相加,然后不断分解。图例可以是这样的

再来看看这,将一个十进制整数转换为N进制的字符串。其实和叠加差不多,代码如下:

def toStr(n,base):
    """

    :param n: 要转换的整数
    :param base: 要转换的进制
    :return: 返回一个
    """
    convertString = "0123456789ABCDEF"

    if  n < base:
        return convertString[n]
    else:
        return toStr(n/base,base) + convertString[ n%base]

print toStr(10,2)


猜你喜欢

转载自blog.csdn.net/cdfukaifeng/article/details/80048305