`
bcyy
  • 浏览: 1818805 次
文章分类
社区版块
存档分类
最新评论

递归函数

 
阅读更多
  • 一、基本的递归函数

首先先来了解下C程序在内存中的组织方式,基本上来说一个可执行的程序在内存中有4个区域组成:代码段、静态数据区、堆与栈。代码段包含程序运行时所执行的机器指令;静态数据区是包含在程序的生命周期内的一直持续的数据,比如全局变量和静态的局部变量;堆包含程序运行过程中动态分配的存储空间。栈是函数调用过程中所使用的信息。

当C程序调用一个函数是栈会分配一个空间来保存与这个调用相关的信息。每一个调用都被当作是活跃的,栈上的那块存储区域成为活跃记录,或者叫栈帧。栈帧有5个区域组成。如下图

下面以最简单的阶乘例子来讲介基本递归的实现过程:

  • 例子:F(n)=nF(n-1) 当n =1或者0时,F(n) =1;

下图展示了利用递归的方法计算的4!过程,描述了递归过程的2个阶段:递推和回归。在递推阶段,每个递归调用自己来记住这次递归的过程,当其中有一个递归条件结束时,递推结束;进入回归阶段!也就是说,递归函数必须拥有一次终止的条件;否则,递归函数无法结束。

每次函数调用都是一个活跃记录信息,而栈是存储信息的。每个活跃记录都占有栈的一定存储空间,而这些函数调用只有到终止条件时,才能逐个释放栈的空间。因此生成和释放活跃记录都需要一定的时间,这样函数调用的开销很大。如果当函数调用太长的话,很容易造成栈溢出,从而出现问题,这样我们便引进来了另一种递归叫为递归。

下面以4!为例描述为递归的过程,很容易为递归每次调用需要一个活跃记录,调用结果会释放活跃记录,进入下一次调用。一直到终止条件。很容易看出为递归比基本递归函数优点。

分享到:
评论

相关推荐

    Python语言基础:递归函数.pptx

    递归函数的定义 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 递归函数的特点 递归函数的优点是定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但...

    JS中递归函数

    编程语言中,函数Func(Type a,……)直接或间接调用函数本身,则该函数称为递归函数。递归函数不能定义为内联函数。 递归函数: function factorical(num){  if(num<=1){  return 1;  }  else{  return num...

    Python递归函数实例讲解

    在本文中我们通过实例给大家讲解了关于Python递归函数的用法以及相关知识点,需要的朋友们学习下。

    讲解Python中的递归函数

    如果一个函数在内部调用自身本身,这个函数就是递归函数。 举个例子,我们来计算阶乘n! = 1 x 2 x 3 x … x n,用函数fact(n)表示,可以看出: fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-...

    Python递归函数特点及原理解析

    主要介绍了Python递归函数特点及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    python递归函数用法详解

    上期我们介绍了函数式编程,这期内容就是关于递归的函数内容,本期还是按照老规矩,给大家进行核心整理,内容通俗易懂,搭配实际应用,以供大家理解。 关于递归: 百度解释:是指函数/过程/子程序在运行过程序中直接...

    5.6 递归思想和递归函数1

    第五章 函数与应用5.6递归思想和递归函数正确答案:B你选对了如果递归函数没有递归结束的语句,将会导致无穷递归,从而执行时出现“死循环”正确答案:2 3 6如下

    省市县递归函数

    省市县递归函数

    详解python中递归函数

    主要介绍了python递归函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    计算递归函数调用次数

    根据题目要求使用递归函数,根据题目给定的数学算式,求出Succ(n)的值。可以在每一次调用递归函数时增加一个计数器,用来计算调用了多少次函数,最后输出Succ(n)的值和调用递归函数次数的值。

    PHP基于简单递归函数求一个数阶乘的方法示例

    主要介绍了PHP基于简单递归函数求一个数阶乘的方法,结合实例形式分析了php递归函数的定义与数学运算简单操作技巧,需要的朋友可以参考下

    Python中递归函数的使用示例

    使用环境:需要先安装PyCharm(请自己百度下载安装),以及然后官网上下载Python 2.7版本,以及Python 3.7版本后,安装在自己的电脑上。 使用步骤: ...目的:帮助理解递归函数在Python中的具体使用。

    C++实现递归函数的方法

    递归函数通俗来讲就是自己调用自己本身。这样有很大的好处,代码很方便简洁,把复杂的有规律的运算交给计算机去做。 1、首先定义问题。递归函数(recursion)需要设置一个函数,然后再可以循环往复的执行下去。 2、把...

    Go 语言递归函数

    Go 语言递归函数 递归,就是在运行的过程中调用自己。 语法格式如下: func recursion() { recursion() /* 函数调用自身 */ } func main() { recursion() } Go 语言支持递归。但我们在使用递归时,开发者需要设置...

Global site tag (gtag.js) - Google Analytics