我在康涅狄格大学学计算机科学专业,我觉得编程好难啊?递归作业不会做怎么办?有没有帮我讲讲递归啊?
很多学生可能在刚上大一的时候就已经学过递归了,但是我相信你们中大多数刚开始学递归的人,都会感觉很难。
递归是函数本身是在函数的代码中调用的,所以我们必须弄清楚递归的结束条件,否则我们就会不断地调用自己,陷入一个无底洞。也就是说,我们需要找出当参数为什么时,递归结束,之后直接把结果返回,请注意,这个时候我们必须能根据这个参数的值,能够直接知道函数的结果是什么。
递归意味着“根据问题本身来定义问题”。这是编写算法的一个非常强大的工具。递归直接来源于数学,在数学中有很多用它们自己写的表达式的例子。例如,斐波那契数列定义为:F(i) = F(i-1) + F(i-2)。递归函数是自己调用自己的一种函数,直到“基本条件”为真,就停止执行。
递归同样适用于计算机算法:一些与计算机相关的例子包括:添加数字列表、计算斐波那契数列、计算阶乘和数独。
我们可以用一个或一段时间的循环做同样的事情。但是使用递归产生了一个更易读的优雅的解决方案。这就是为什么我们使用递归解决方案。很多时候,将问题分解成更小的部分更有效率。把问题分成小部分有助于克服它。因此,递归是一种解决问题的分治方法。