Algorithm 教递归技术最好的方法是什么?
我正在为新程序员教授竞争性编程Algorithm 教递归技术最好的方法是什么?,algorithm,recursion,Algorithm,Recursion,我正在为新程序员教授竞争性编程 我想教递归,但我不知道什么问题最适合教“递归技术” 我知道很多递归问题,比如计算阶乘、斐波那契数、求解等等 但我不知道新程序员能理解这种递归算法 请告诉我你是否有教递归技术的好主意这是一个非常主观的问题,可能已经结束,但无论如何我都会回答以帮助您 教递归的步骤: 定义: 递归是函数本身重用函数结果的现象。 注: 结束符号是确定函数是否使用自身的逻辑术语 如果没有结束符号,或者结束符号总是false,那么我们就有一个无限递归,这可能导致堆栈溢出 间接递归是一种现
我想教递归,但我不知道什么问题最适合教“递归技术”
我知道很多递归问题,比如计算阶乘、斐波那契数、求解等等
但我不知道新程序员能理解这种递归算法
请告诉我你是否有教递归技术的好主意
这是一个非常主观的问题,可能已经结束,但无论如何我都会回答以帮助您 教递归的步骤:
- 结束符号是确定函数是否使用自身的逻辑术语
- 如果没有结束符号,或者结束符号总是false,那么我们就有一个无限递归,这可能导致堆栈溢出
- 间接递归是一种现象,当函数不直接使用其结果,但其结果依赖于它调用的函数时
- 函数组合是函数调用另一个函数示例时发生的现象(该示例实际上不是函数组合,正如注释部分正确指出的那样):tangent(alpha)=sin(alpha)/cos(alpha)
- 递归是函数组合的一种特殊情况,在构建f函数的依赖关系树时,我们可以发现f是一个依赖关系
- n!(这很简单,我们应该从这个开始)
- 斐波那契
- 二进制搜索
为了让递归课程易懂,可以解释它们不是函数,它们仍然在起作用并改变状态。这样,这个案例就可以完美地融入到课程中。你应该通过教递归技术来教递归技术。@jornsharpe,LOL,epic comment!从类型开始。显示归纳定义的类型(列表、树…)。解释这些问题自然适合用递归来解决。下面,讨论一些问题是如何由与整体相似的部分构成的,这样搜索的解函数就可以应用到这些部分,就好像它已经被编写过一样。(请参阅和)。请使用递归可以最好地解决的问题来教授递归,而不是通过递归破坏简单的迭代解决方案。这样,您的学生就可以理解递归为什么有用以及何时应用它。我建议去河内塔或是合并塔。保存动态规划课程的子集和。数独是一个很好的例子,你必须使用回溯。@AdrianColomitchi,你评论中所显示的令人自豪的缺乏知识让我震惊。看看三角学的基础知识并学习:@AdrianColomitchi,你的第一个问题是你不相信切线(alpha)=sin(alpha)/cos(alpha)。这个例子确实是有缺陷的,但我希望当一方批评另一方时,会有一些文化、公平,最重要的是正确性。我也希望低评价的男人不要在他们的知识水平之上变得傲慢。最后,我希望这个网站的所有成员都避免涉及个人隐私。你的第三个评论实际上是合理的,你的第一个评论缺乏文化,第二个评论缺乏文化和知识。“另一方面,你评论中的批评方式可能会吓跑较弱的灵魂,使他们不敢回答和提问。”你的观点很好,关于你的编辑:我可以建议你做点什么,在最后一刻之前就指出这个缺陷吗?如果您不想替换这里的示例,至少要以某种方式将其标记为可见(我没有弄错,因此的标记支持
标记)。如果你不想敲打它,make要小一些(使用/
标签)并加上一个“脚注标记”。无论如何,早点做点什么,不要等到文章结束后才去改正:很多人可能会被错误绊倒,放弃阅读你一半的观点。至于tan
作为组合,那么div(sin(x),sin(π/2-x))
呢?可以应用于您的答案的另一个改进:递归不限于函数c的特定情况