初学者的递归函数?

时间:2010-04-12 11:44:44

标签: recursion

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

例如,我更喜欢C#,但一切正常。

3 个答案:

答案 0 :(得分:3)

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

2然后你可以转到

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

E.g。 tree traversalgraph traversal

搜索问题,例如8-queens problems

3你可能想学习 划分和征服算法,例如,合并排序和快速排序。它们通常是递归实现的。

这些都非常经典!

答案 1 :(得分:2)

我发现Stanford Engineering Everywhere计划提供的在线课程是一个很好的资源。如果你看看他们的CS106B课程,讲座7到11,你应该对递归有一个很好的基本理解。他们还提供解决问题的练习。

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

答案 2 :(得分:0)

好吧,如果您在实现基本递归函数时遇到问题,我建议您实际上并不理解它们。但是,没有任何耻辱,不是每个人都可以轻松获得递归。我建议你尝试使用简单的算法,而不是对不起:

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