1 / 61
文档名称:

递归的概念递归过程与递归工作栈递归与回溯广义表课件ppt课件.ppt

格式:ppt   大小:837KB   页数:61页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

递归的概念递归过程与递归工作栈递归与回溯广义表课件ppt课件.ppt

上传人:gyzhluyin 2018/10/6 文件大小:837 KB

下载得到文件列表

递归的概念递归过程与递归工作栈递归与回溯广义表课件ppt课件.ppt

文档介绍

文档介绍:递归的概念
递归过程与递归工作栈
递归与回溯
广义表
第五章递归与广义表
递归的概念
递归的定义若一个对象部分地包含它自己, 或用它自己给自己定义, 则称这个对象是递归的;若一个过程直接地或间接地调用自己, 则称这个过程是递归的过程。
以下三种情况常常用到递归方法。
定义是递归的
数据结构是递归的
问题的解法是递归的
定义是递归的
求解阶乘函数的递归算法
long Factorial ( long n ) {
if ( n == 0 ) return 1;
else return n * Factorial (n-1);
}
例如,阶乘函数
求解阶乘 n! 的过程
主程序 main : fact(4)
参数 4 计算 4*fact(3) 返回 24
参数 3 计算 3*fact(2) 返回 6
参数 2 计算 2*fact(1) 返回 2
参数 1 计算 1*fact(0) 返回 1
参数 0 直接定值= 1 返回 1
参数传递
结果返回
递归调用
回归求值
数据结构是递归的
一个结点,它的指针域为NULL,是一个单链表;
一个结点,它的指针域指向单链表,仍是一个单链表。
例如,单链表结构
f

f

问题的解法是递归的

例如,汉诺塔(Tower of Hanoi)问题的解法:
如果 n = 1,则将这一个盘子直接从 A 柱移到 C 柱上。否则,执行以下三步:
①用 C 柱做过渡,将 A 柱上的(n-1) 个盘子移
到 B 柱上:
②将 A 柱上最后一个盘子直接移到 C 柱上;
③用 A 柱做过渡,将 B 柱上的(n-1) 个盘子移
到 C 柱上。
#include <>
#include "”
void Hanoi (int n, String A, String B, String C) {
//解决汉诺塔问题的算法
if ( n == 1 ) cout << " move " << A << " to "
<< C << endl;
else { Hanoi ( n-1, A, C, B );
cout << " move " << A << " to " << C
<< endl;
Hanoi ( n-1, B, A, C );
}
}