Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Recursion 初学者的递归函数?_Recursion - Fatal编程技术网

Recursion 初学者的递归函数?

Recursion 初学者的递归函数?,recursion,Recursion,我正在寻找一些递归函数示例,最好是那些显示复杂性增加的示例。我理解基本的递归函数,但在代码中实现它们时遇到了困难。我以前从未在代码中使用过它们,我知道它并不总是需要它们,但我想尝试一下。是否有一个很好的例子资源,也许还有一些挑战?或者甚至一些简单的数学问题(欧拉项目风格?),我可以使用递归 例如,我更喜欢C#,但任何东西都能用。1最简单的是阶乘、斐波那契序列或由递归函数定义的任何数学序列 2然后你可以搬到 任何使用深度优先搜索的算法 例如: 搜索问题,比如 你可能想学习 分治算法,例如合并排序和

我正在寻找一些递归函数示例,最好是那些显示复杂性增加的示例。我理解基本的递归函数,但在代码中实现它们时遇到了困难。我以前从未在代码中使用过它们,我知道它并不总是需要它们,但我想尝试一下。是否有一个很好的例子资源,也许还有一些挑战?或者甚至一些简单的数学问题(欧拉项目风格?),我可以使用递归


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

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

2然后你可以搬到

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

例如:

搜索问题,比如

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


这些都很经典

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


如果您在实现基本递归函数时遇到问题,我建议您实际上并不理解它们。但这并不丢脸,不是每个人都能轻易地“得到”递归。我建议您尝试以下方法,而不是将您的头撞到简单的算法上:

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

继续监视此页面中的一些示例:如果您是软件开发新手,更重要的是避免不适合的递归。开始:Wiki。GOTO BEGINI有一个理论,许多学生害怕递归函数,因为当老师介绍这个主题时,他们说大多数学生害怕递归。(我不是想耍聪明)在谷歌上搜索“递归”并查看拼写更正器的信息。这是谷歌开的玩笑吗?