【问题标题】:Recursive Functions for Beginners?适合初学者的递归函数?
【发布时间】:2010-04-12 11:44:43
【问题描述】:

我正在寻找一些递归函数示例,最好是显示复杂性增加的示例。我了解基本的递归函数,但在我的代码中实现它们时遇到了麻烦。我以前从未在我的代码中使用过它们,而且我知道它并不总是需要它,但我想尝试一下。有没有很好的例子资源,也许是某种挑战?甚至是一些我可以使用递归的简单数学问题(Project Euler 风格?)?

例如,我更喜欢 C#,但任何东西都可以。

【问题讨论】:

  • 继续监视此页面以获取一些示例:stackoverflow.com/questions/2621726/…
  • 如果您是软件开发新手,更重要的是避免在不适合的地方递归。
  • 开始:维基这个。转到开始
  • 我有一个理论,很多学生害怕递归函数,因为当老师介绍这个主题时,他们说大多数学生害怕递归。 (我不是想聪明)
  • 在 Google 上搜索“递归”并查看拼写纠正者的消息。这是 Google 的玩笑吗?

标签: recursion


【解决方案1】:

1 最简单的是阶乘、斐波那契数列或任何由递归函数定义的数学数列。

2 然后你可以移动到

任何使用深度优先搜索的算法。

例如tree traversalgraph traversal

搜索问题,例如8-queens problems

3 你可能想学习 分治算法,例如合并排序和快速排序。它们通常以递归方式实现。

这些都非常经典!

【讨论】:

    【解决方案2】:

    我发现斯坦福工程无处不在计划提供的在线课程是一个极好的资源。如果你看看他们的 CS106B 课程,第 7 到第 11 课,你应该对递归有很好的基本了解。他们还提供有问题需要解决的练习。

    http://see.stanford.edu/see/lecturelist.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e

    【讨论】:

      【解决方案3】:

      好吧,如果您在实现基本递归函数时遇到困难,我建议您实际上并不了解它们。但这并没有什么可耻的,并不是每个人都容易“得到”递归。我建议您不要尝试简单的算法:

      • 思考和研究递归数据结构(例如树、图或列表)的用途。在递归是自然方法的情况下学习使用递归可能是获得递归乐趣的更好途径,而不是尝试大量应该用循环解决的示例。
      • 使用以递归为基本、原始概念的语言。 Haskell 和其他一些函数式编程语言可以做到。通常,解决 FP 问题最自然的方法是实现递归。在其他语言中,您通常必须首先与该语言怪异的递归方法作斗争。我不知道 C# 是否有一种奇怪的递归方法。

      【讨论】:

        猜你喜欢
        • 2011-07-12
        • 2016-09-23
        • 1970-01-01
        • 1970-01-01
        • 2010-09-17
        • 2015-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多