c语言递归函数的运行步骤,c语言中递归函数的运行过程?
匿名用户
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语言中递归函数的运行过程?相关推荐
- android获取运行应用程序,Android中获取正在运行的应用程序
Android中获取正在运行的应用程序 ActivityMain.java 1.public class ActivityMain extends ListActivity { 2. @Overrid ...
- 明明pycharm里面都能运行,为什么在CMD中就不能运行了呢,报ImportError: No module named 'commom' 的错误
我想在test文件夹中的test.py调用自己写在common文件夹中的module_test.py里面的函数方法 module_test.py内容如下: def pwd():print('我是一个自 ...
- c语言数组的使用步骤,C语言中为什么要使用数组?详细图解数组的使用
唉,有这么多不同主题的书.在哪里才能找到有关中国音乐的书呢? 数组是可以在内存中连续存储多个元素的结构 数组中的所有元素必须属于相同的数据类型 1.在计算机内存中,同一数组的所有元素按下标顺序依次存放 ...
- C语言输出转置矩阵解题步骤,C语言实现矩阵转置
讲解对象:C语言实现矩阵转置 作者:融水公子 rsgz 1随机函数生成矩阵 #include #include #include int main(){ int i,j; int a[5][3]; p ...
- c语言线程的创建步骤,C语言创建线程thread_create()的方法
在头文件 threads.h 中,定义和声明了支持多线程的宏.类型和函数.所有直接与线程相关的标识符,均以前缀 thrd_ 作为开头.例如,thrd_t 是一个对象类型,它标识了一个线程. 函数 th ...
- c语言程序开发过程上机步骤,C语言程序上机步骤2010.doc
第一步:建立实验文件夹和实验报告文档. 在本机学生盘E:\建立名为自己学号的文件夹,例如"410050122",登陆FTP服务器( ftp://202.204.62.191:89 ...
- c语言函数的使用步骤,c语言打开文件函数使用方法
ANSI C规定文件打开用函数fopen,关闭为fclose. 1.调用方式通常为: FILE *fp; fp=fopen(文件名, 打开方式); 2.参数说明: 文件名: 形如"myfil ...
- c语言尾插法步骤,C语言尾插法链表
算法示意图: #include using namespace std; struct DATA { int id; char name[20]; }; struct info { DATA data ...
- c语言程序改错题步骤,C语言程序改错题库
3). y+=1.0/(2*i-3); ━━━━━━━━━━━━━━━━━━ 一.程序改错 共138题 (共计1380分) ━━━━━━━━━━━━━━━━━━ 第2题 (10.0分) /*----- ...
最新文章
- Servlet3.0 版本问题,以及Servlet3.0中Annotation的使用
- SVN导致目录图标出现“?”号解决方案
- 『数据库』震惊,某博主为吸引眼球拿出压箱底SQL总结,如果你没看那就吃亏了!(超级详细的SQL基础,你还不会的话就别学数据库了)
- struts2批量删除
- php curl 使用方法,php curl使用方法与步骤
- Python 数据分析三剑客之 Matplotlib(一):初识 Matplotlib 与其 matplotibrc 配置文件
- 《Python Cookbook 3rd》笔记(1.8):字典运算
- I/O多路复用——Reactor模式
- 设置Myeclipse中的代码格式化、及保存时自动格式化
- Android 基础知识 -- Linux环境搭建
- python编程入门 适合于零基础朋友-Python不能帮你找到女朋友,却能让你成为有钱的单身狗。...
- ArcCatalog不能预览地图服务
- 升压电路的原理-原文地址:http://www.52solution.com/basic/1218
- oracle错误1327,问题简述:在oracle linux下安装oracle10g,多个文件报“Permission denied”错误...
- 华硕怎么安装linux系统教程,华硕Eee PC下安装Puppy Linux系统(图)
- 工程师软技能~聊聊价值,价值观和价值积累
- SWFObject参数
- iframe的替代品
- 三分钟搞懂机器学习和深度学习的区别
- 高新技术企业认定 国家高新技术企业复审指南