繁体   English   中英

Python求和递归的教程

[英]Tutorial for summation recursion in Python

我需要编写一个程序来执行某个函数的上,下递归,我完全不知道该如何启动。 我查看了python文档,发现它比有用的东西更令人困惑。 如果有人可以为我提供有关python求和惯例的教程和/或文档的正确指导,我将不胜感激。 谢谢

编写递归函数可能会很棘手,但是有很多很好的参考资料可以帮助您更好地解决此类问题。 我强烈建议您获得一份“ 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 )

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

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

您可以查看第3章,它与递归算法有关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM