`
liwei888
  • 浏览: 95768 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

递归算法解析

阅读更多

和迭代差不多,只是通过定义和调用函数来实现迭代
把事情分解成相同的步骤重复执行直到符合某一条件时结束,再反过来递推到最初的状态,问题就解决了

比如定义(用的是C语言)
int fun(int a)
{
if(a==1) return 1;
else
{
a=a*fun(a-1);
return a;
}
}
在fun里面再定义fun,这个fun都只做一件事,把a的内容和fun(a-1)相乘作为返回值
这里要有个终止条件,即a=1时返回值为1,这样,如果我给最初的fun里的a赋值为5,第一步为5*fun(4),而执行fun(4)的结果为4*fun(3)....直到fun(2)=2*fun(1)即fun(2)=2*1,再把fun(2)代回去,得fun(3)=3*2*1,最后倒推的结果为fun(5)=5*4*3*2*1,即这个递归函数实现了a的阶乘fun(a)=a!

够详细了吧,觉得好的话给我加分吧 ^_^

分享到:
评论

相关推荐

    abap简单递归算法

    ### ABAP简单递归算法解析 #### 一、引言 ABAP(Advanced Business Application Programming)是一种用于SAP系统的编程语言。它不仅支持传统的过程化编程,还支持面向对象编程和Web开发。本文将深入探讨一个ABAP中...

    python3实现二叉树的遍历与递归算法解析(小结)

    1、二叉树的三种遍历方式 二叉树有三种遍历方式:先序遍历,中序遍历,后续遍历 即:先中后指的是访问根节点的顺序 eg:先序 根左右 中序 左根右 后序 左右根 遍历总体思路:将树分成最小的子树,然后按照顺序输出 ...

    背包问题的递归算法,C语言实现

    递归算法是解决背包问题的一种常见方法。在给定的C语言代码中,`find` 函数就是用来实现递归解法的。这个函数接受三个参数:当前考虑的物品索引 `i`,当前方案的总重量 `tw` 和当前方案的总价值 `tv`。递归过程可以...

    Hanoi塔问题的一种非递归算法

    ### Hanoi塔问题的一种非递归算法:深入解析与实现 #### 一、引言 Hanoi塔问题作为计算机科学领域内经典的递归问题之一,因其简洁性和挑战性而广受关注。通常,Hanoi塔问题的解决方案多采用递归算法,尽管其逻辑...

    Java递归算法构造JSON树形结构

    Java 递归算法构造 JSON 树形结构 Java 递归算法构造 JSON 树形结构是指通过 Java 语言使用递归算法将数据库中的菜单表构建成树形的 JSON 格式发送给第三方。这种方法可以将复杂的树形结构数据转换成易于理解和处理...

    汉诺塔问题非递归算法的实现

    非递归算法解析 传统的汉诺塔问题解决方案多采用递归方法,因为递归算法具有直观、简洁的特点。然而,非递归算法在某些情况下可能更加高效,并且可以避免递归可能导致的栈溢出等问题。非递归算法的核心在于确定每...

    pascal递归算法.doc

    《Pascal递归算法解析》 递归算法是编程领域中的一个重要概念,尤其在解决复杂问题时显得尤为重要。递归是指一个过程或函数在执行过程中直接或间接地调用自身,形成一种自我引用的结构。在Pascal语言中,递归函数的...

    递归算法习题

    递归算法是一种在解决问题时将问题拆分成更小的、相同或相似问题的方法。在编程中,递归是一种常见的技术,指的是函数直接或间接地调用自身来解决问题。递归算法的关键在于它必须能够将问题规模缩小,并且有一个明确...

    递归算法总结

    递归算法作为一种强大的算法设计策略,在计算机科学和其他领域被广泛应用。它通过将复杂问题简化为更小的子问题,并通过自身的重复调用来解决问题。尽管递归算法有其明显的优点,比如简化问题描述、使算法更加清晰...

    java编写的递归算法的经典事例

    ### Java编写的递归算法的经典事例:全排列输出 #### 概述 本文将详细介绍一个用Java编写的递归算法实例,该实例用于实现字符数组的所有可能全排列。通过这个例子,我们可以深入理解递归的基本概念、工作原理以及...

    请写出对有序表进行折半查找的非递归算法.doc

    #### 非递归算法解析 在计算机科学领域,折半查找(又称二分查找)是一种高效的查找算法,它的工作原理是在一个有序数组中查找特定元素的位置。对于有序表进行折半查找的非递归算法,我们可以基于给定代码进行详细...

    汉诺塔 程序代码以及 递归算法解释

    ### 汉诺塔问题与递归算法解析 汉诺塔问题是一个经典的递归问题,源自于一个古老的传说,相传在印度的一个寺庙里有一座汉诺塔,由三根柱子和若干个不同大小的圆盘组成。游戏的规则是:把所有圆盘从一根柱子上移动到...

    Java实现用递归算法和非递归算法求解斐波那契数列问题.docx

    ### Java实现用递归算法和非递归算法求解斐波那契数列问题 #### 知识点解析 在给定的文档标题与描述中,“Java实现用递归算法和非递归算法求解斐波那契数列问题”明确指出了本文将围绕Java编程语言、递归算法与非...

    二叉树遍历的通用非递归算法.pdf

    ### 二叉树遍历的通用非递归算法解析 #### 一、引言 二叉树作为一种重要的数据结构,在计算机科学中应用广泛。对于二叉树的操作,遍历是最基本也是最常用的一种。传统的遍历算法通常采用递归方式实现,这种方式...

    可并行递归算法的递归多线程实现

    ### 可并行递归算法的递归多线程实现:深入解析 #### 引言:多线程与并行处理的重要性 随着计算任务日益复杂,传统的单线程编程模型已无法满足高效处理大规模数据的需求。多线程编程作为一种提高程序并发性和性能...

    Java递归算法(PPT+PDF+Word)

    总的来说,这个资料包提供了全面的递归算法学习资源,包括理论讲解、实例解析和可视化展示,对于想要深入理解Java递归算法的开发者来说,是一份宝贵的参考资料。通过学习这些内容,你将能够更好地掌握递归的概念,...

    用递归算法编写求一个数组A中的最大元素

    ### 递归算法在求解数组最大值中的应用 #### 一、递归算法简介 递归算法是一种通过调用自身来解决问题的方法。它通常包括两个部分:基本情况(base case)与递归情况(recursive case)。对于求解数组中的最大值...

    折半查找的递归与非递归算法

    以上是对折半查找算法及其递归和非递归实现的详细解析。在实际编程中,理解并运用这些概念对于提高搜索效率,特别是在处理大量数据时,具有重要意义。在 `biSearch.java` 文件中,我们可以看到具体的代码实现,这将...

    使用递归算法结合数据库解析成Java树形结构的代码解析

    使用递归算法结合数据库解析成Java树形结构的代码解析是指通过递归算法解析数据库中的树形结构数据,并将其转换为Java树形结构的过程。 首先,需要准备好表结构及对应的表数据。在这个示例中,我们创建了一个名为TB...

    中序遍历二叉树的递归算法

    ### 中序遍历二叉树的递归算法 #### 知识点概述 本文将详细介绍如何使用递归方法实现二序遍历二叉树,并解释其背后的原理与应用场景。 #### 二叉树简介 二叉树是一种数据结构,其中每个节点最多有两个子节点:左...

Global site tag (gtag.js) - Google Analytics