Python中求和递归的教程

时间:2012-02-09 01:25:08

标签: python python-3.x

我需要编写一个程序来执行函数的向上递归然后向下递归,我完全迷失了如何启动。我查看了python文档,发现它比有用更令人困惑。如果有人能指出关于教程的正确方向,或者有关python中求和约定的文档,我将不胜感激。感谢

2 个答案:

答案 0 :(得分:3)

编写递归函数可能很难处理,但是有更好的参考可以更好地解决这些问题。我强烈建议您获取"A little schemer"的副本。使用类似语言的语言工作可能比在python中直接使用它更容易。

在python中,递归求和可以写成:

def rsum( seq ):
    if not seq:
        return 0
    else:
        return seq[0] + rsum(seq[1:])

从第一原则开始,值得注意的是,这个函数遵循一个非常常见的模式,它是fold的一个例子。在python中,您可以将foldlfoldr写为:

def foldl( f, z, xs ):
    if not xs:
        return z
    else:
        return foldl(f, f(z, xs[0]), xs[1:])

def foldr( f, z, xs ):
    if not xs:
        return z
    else:
        return f(xs[0], foldr(f, z, xs[1:]))

使用更高阶的构建块意味着您可以真正地将rsum写为:

def rsum(seq):
    return foldl( lambda a,b: a+b, 0, seq )

或者:

def rsum(seq):
    return foldr( lambda a,b: a+b, 0, seq )

答案 1 :(得分:1)

以下是使用算法和数据结构解决问题的官方幻灯片:

http://www.pythonworks.org/pythonds/Slides.zip?attredirects=0&d=1

您可以查看第3章,它是关于递归算法的。