匿名用户

1级

2010-12-11 回答

递归(recursion)就是子程序(或函数)直接调用自己或通过一系列调用语句间接调用自己,是一种描述问题和解决问题的基本方法。

递归通常用来解决结构自相似的问题。所谓结构自相似,是指构成原问题的子问题与原问题在结构上相似,可以用类似的方法解决。具体地,整个问题的解决,可以分为两部分:第一部分是一些特殊情况,有直接的解法;第二部分与原问题相似,但比原问题的规模小。实际上,递归是把一个不能或不好解决的大问题转化为一个或几个小问题,再把这些小问题进一步分解成更小的问题,直至每个小问题都可以直接解决。因此,递归有两个基本要素:

(1)边界条件:确定递归到何时终止,也称为递归出口。

(2)递归模式:大问题是如何分解为小问题的,也称为递归体。递归函数只有具备了这两个要素,才能在有限次计算后得出结果

汉诺塔问题:对汉诺塔问题的求解,可以通过以下3个步骤实现:

(1)将塔上的n-1个碟子借助塔C先移到塔B上;

(2)把塔A上剩下的一个碟子移到塔C上;

(3)将n-1个碟子从塔B借助塔A移到塔C上。

在递归函数中,调用函数和被调用函数是同一个函数,需要注意的是递归函数的调用层次,如果把调用递归函数的主函数称为第0层,进入函数后,首次递归调用自身称为第1层调用;从第i层递归调用自身称为第i+1层。反之,退出第i+1层调用应该返回第i层。采用图示方法描述递归函数的运行轨迹,从中可较直观地了解到各调用层次及其执行情况ÿ

c语言递归函数的运行步骤,c语言中递归函数的运行过程?相关推荐

  1. android获取运行应用程序,Android中获取正在运行的应用程序

    Android中获取正在运行的应用程序 ActivityMain.java 1.public class ActivityMain extends ListActivity { 2. @Overrid ...

  2. 明明pycharm里面都能运行,为什么在CMD中就不能运行了呢,报ImportError: No module named 'commom' 的错误

    我想在test文件夹中的test.py调用自己写在common文件夹中的module_test.py里面的函数方法 module_test.py内容如下: def pwd():print('我是一个自 ...

  3. c语言数组的使用步骤,C语言中为什么要使用数组?详细图解数组的使用

    唉,有这么多不同主题的书.在哪里才能找到有关中国音乐的书呢? 数组是可以在内存中连续存储多个元素的结构 数组中的所有元素必须属于相同的数据类型 1.在计算机内存中,同一数组的所有元素按下标顺序依次存放 ...

  4. C语言输出转置矩阵解题步骤,C语言实现矩阵转置

    讲解对象:C语言实现矩阵转置 作者:融水公子 rsgz 1随机函数生成矩阵 #include #include #include int main(){ int i,j; int a[5][3]; p ...

  5. c语言线程的创建步骤,C语言创建线程thread_create()的方法

    在头文件 threads.h 中,定义和声明了支持多线程的宏.类型和函数.所有直接与线程相关的标识符,均以前缀 thrd_ 作为开头.例如,thrd_t 是一个对象类型,它标识了一个线程. 函数 th ...

  6. c语言程序开发过程上机步骤,C语言程序上机步骤2010.doc

    第一步:建立实验文件夹和实验报告文档. 在本机学生盘E:\建立名为自己学号的文件夹,例如"410050122",登陆FTP服务器( ftp://202.204.62.191:89 ...

  7. c语言函数的使用步骤,c语言打开文件函数使用方法

    ANSI C规定文件打开用函数fopen,关闭为fclose. 1.调用方式通常为: FILE *fp; fp=fopen(文件名, 打开方式); 2.参数说明: 文件名: 形如"myfil ...

  8. c语言尾插法步骤,C语言尾插法链表

    算法示意图: #include using namespace std; struct DATA { int id; char name[20]; }; struct info { DATA data ...

  9. c语言程序改错题步骤,C语言程序改错题库

    3). y+=1.0/(2*i-3); ━━━━━━━━━━━━━━━━━━ 一.程序改错 共138题 (共计1380分) ━━━━━━━━━━━━━━━━━━ 第2题 (10.0分) /*----- ...

最新文章

  1. Servlet3.0 版本问题,以及Servlet3.0中Annotation的使用
  2. SVN导致目录图标出现“?”号解决方案
  3. 『数据库』震惊,某博主为吸引眼球拿出压箱底SQL总结,如果你没看那就吃亏了!(超级详细的SQL基础,你还不会的话就别学数据库了)
  4. struts2批量删除
  5. php curl 使用方法,php curl使用方法与步骤
  6. Python 数据分析三剑客之 Matplotlib(一):初识 Matplotlib 与其 matplotibrc 配置文件
  7. 《Python Cookbook 3rd》笔记(1.8):字典运算
  8. I/O多路复用——Reactor模式
  9. 设置Myeclipse中的代码格式化、及保存时自动格式化
  10. Android 基础知识 -- Linux环境搭建
  11. python编程入门 适合于零基础朋友-Python不能帮你找到女朋友,却能让你成为有钱的单身狗。...
  12. ArcCatalog不能预览地图服务
  13. 升压电路的原理-原文地址:http://www.52solution.com/basic/1218
  14. oracle错误1327,问题简述:在oracle linux下安装oracle10g,多个文件报“Permission denied”错误...
  15. 华硕怎么安装linux系统教程,华硕Eee PC下安装Puppy Linux系统(图)
  16. 工程师软技能~聊聊价值,价值观和价值积累
  17. SWFObject参数
  18. iframe的替代品
  19. 三分钟搞懂机器学习和深度学习的区别
  20. 高新技术企业认定 国家高新技术企业复审指南

热门文章

  1. 单片机 信号发生器(DAC0832)
  2. 使用SQL语句向表中插入多行数据
  3. 打包开发板根文件系统,并制作成img镜像
  4. js清除cookie有时无法清除
  5. hive 读取 map的value
  6. Allegro Shape菜单详解
  7. Pytorch应用训练好的模型
  8. MATLAB进阶教程第一节(图形绘制)
  9. 【软考高项】新一代信息技术及应用之云计算
  10. js实现base64编码和解码