`
jimmee
  • 浏览: 538741 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

关于递归

    博客分类:
  • J2SE
 
阅读更多
当需要解决的问题具有如下两个特性时就可以考虑使用递归:
(1) 问题的复杂度可以降低,但是保持原始问题的形式。
(2) 最简单的情况可以直接解决。
其实递归的两个特性分别对应数学归纳法里的归纳事件和基本事件。

注意
1) 递归方法通常需要消耗更多的内存。因为一般递归调用时要保存返回地址和参数的副本。
2) 在使用递归方法时要防止出现无穷递归,否则将出现StackOverflowError错误。
3) 当使用一个递归程序时,需要考虑到编译环境必须维护一个与递归深度成正比例的堆栈。对于一个庞大的问题,栈所需要的空间可能会使我们无法使用递归解决方案。例如,我们在定义一个链表的一些方法,使用递归的方式实现,这种情况下,递归的深度可能与链表的长度成正比例。
分享到:
评论

相关推荐

    关于递归的误区

    关于递归的误区:深入解析递归的时间复杂度与优化策略 在计算机科学领域,递归是一种常见的算法设计技巧,其基本思想是将问题分解为更小的子问题,直至达到可以直接解决的基本情况,然后逐步返回求解原问题。递归因...

    关于递归算法时间复杂度分析的探讨.pdf

    关于递归算法时间复杂度分析的探讨,是一个深入理解算法效率和优化的关键议题。递归,作为解决问题的一种强大工具,其本质是将复杂问题分解为更简单的子问题,通过求解这些子问题来达到最终解决方案的目的。然而,...

    关于递归教学的探讨.doc

    关于递归教学的探讨 递归是计算机科学中一种核心的程序设计技术,它涉及到函数或过程在其执行过程中调用自身的过程。递归在程序设计基础、数据结构和算法设计等课程中扮演着重要角色,但也是教学上的难点。递归教学...

    python基础(补充):关于递归的优化(使用缓存).pdf

    递归优化(使用缓存) 递归是 Python 中的一种重要编程技术,但是其缺陷之一是计算速度慢。优化递归是提高计算效率的重要步骤,本文将讨论使用缓存来优化递归的方案。 递归的优化思路 ---------------- 递归的...

    关于递归教学的探讨.zip

    在计算机科学中,递归是一种强大的编程概念,它涉及到函数或过程在其定义中调用自身。递归在解决复杂问题时特别有用,因为它允许将大问题分解为更小的相似子问题,直到达到基本情况,然后逐步合并解决方案。本文将...

    一个关于递归的小问题

    x=fib(n-1)+fib(n-2);

    C#中的尾递归与Continuation详解

    关于递归操作,相信大家都已经不陌生。简单地说,一个函数直接或间接地调用自身,是为直接或间接递归。例如,我们可以使用递归来计算一个单向链表的长度: 代码如下: public class Node {  public Node(int value,...

    c++递归c++递归c++递归

    c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘...

    c++递归实现汉诺塔问题

    汉诺塔问题是一个经典的计算机科学问题,源自印度的古老传说,它涉及到三个柱子和一堆大小...以上就是关于“C++递归实现汉诺塔问题”的详细解析,它涵盖了递归算法设计的基本概念、实例代码以及相关的计算机科学知识。

    8. 递归互斥信号量.zip

    递归互斥信号量.zip"这个压缩包中,包含的源代码很可能是FreeRTOS中关于递归互斥信号量的示例应用。通过分析这些源码,我们可以学习如何创建、获取和释放递归互斥信号量,以及如何在实际项目中正确使用它们。 创建...

    递归九讲2021 7-9.zip

    《递归九讲2021 7-9》是一个关于递归算法的专题学习资料,涵盖了递归在解决各种问题中的应用,包括二叉树类问题和排列类问题。通过对递归的理解和掌握,我们可以解决更复杂的问题,提高编程效率。本资料包括三章互动...

    递归下降分析子程序方法.rar

    文件列表中有一个名为 "2010级软件工程2班2010416495刘士强(实验三)实验报告.doc" 的文档,这很可能是刘士强同学完成的关于递归下降分析的实验报告,里面可能包含了他对递归下降分析方法的理论理解和实际操作步骤...

    NOIP普及讲座1-递归与分治(C++版).pdf

    根据给定文件的信息,我们可以总结出以下关于递归与分治技术的重要知识点: ### 一、递归的基本概念 #### 定义: 递归是一种在程序设计中非常重要的方法,它指的是在一个函数或过程中直接或间接地调用自身来解决...

    课程设计表达式计算器--递归实现

    以下是关于递归表达式计算器的一些关键知识点: 1. **递归的基本概念**:递归是一种解决问题的方法,它将问题分解为更小的子问题,直到子问题可以直接解答。在计算表达式时,递归通常用于处理如括号嵌套、函数调用...

    递归Recursion)1

    标题提到的"递归Recursion)1"可能是指一个关于递归的系列教程或讨论的第一个部分,重点是介绍递归的基本概念和QL中的应用。 描述中提到了一个使用递归谓词`getANumber()`的例子,这个谓词用于生成0到100之间的所有...

    digui.rar_递归算法

    "www.pudn.com.txt"可能是一个文档,提供了关于递归算法的详细资料,可能包括递归的基本概念、递归函数的定义、递归的特性以及如何设计递归算法等。在递归算法中,通常有一个或多个基本情况(base cases),这些是不...

    DiGui_1.rar_递归 演示

    文件`www.pudn.com.txt`可能是一个文档,提供了关于递归概念的进一步解释,或者是项目的说明或者代码注释。 在VC++中实现递归,你需要确保以下几点: 1. **正确设定基础情况**:递归函数必须有一个明确的基础情况...

    递归算法实现一系列问题

    递归算法是计算机科学中的一个重要概念,它是一种解决问题的方法,其中函数或过程调用...以上是关于递归算法的一些基本知识和应用场景。通过深入学习和实践,你可以更好地掌握递归算法,并将其运用到各种实际问题中。

    recursion-see-recursion:关于递归和垃圾的演讲幻灯片

    **标题解析:**"recursion-see-recursion:关于递归和垃圾的演讲幻灯片",这个标题表明了主题是关于编程中的递归概念,同时可能涉及到了内存管理,特别是“垃圾”的提及,可能指的是JavaScript环境中的垃圾回收机制。...

    C/C++递归技术详解

    从提供的压缩包文件名来看,它们可能包含了关于递归和分治策略的详细讲解,如"递归与分治.ppt",以及可能的实例分析。通过学习这些材料,你可以更深入地理解递归在C/C++中的应用和实践。 总之,掌握递归是提升编程...

Global site tag (gtag.js) - Google Analytics